38 lines
882 B
Text
38 lines
882 B
Text
FUNCTION log10(n)
|
|
LET log10 = LOG(n)/LOG(10)
|
|
END FUNCTION
|
|
|
|
FUNCTION frequency(n)
|
|
LET frequency = (log10(n+1)-log10(n))
|
|
END FUNCTION
|
|
|
|
FUNCTION fibonacci(n)
|
|
!https://rosettacode.org/wiki/Fibonacci_sequence#True_BASIC
|
|
LET n1 = 0
|
|
LET n2 = 1
|
|
FOR k = 1 TO ABS(n)
|
|
LET sum = n1+n2
|
|
LET n1 = n2
|
|
LET n2 = sum
|
|
NEXT k
|
|
IF n < 0 THEN LET fibonacci = n1*((-1)^((-n)+1)) ELSE LET fibonacci = n1
|
|
END FUNCTION
|
|
|
|
CLEAR
|
|
LET n = 1000
|
|
DIM actual(0)
|
|
MAT REDIM actual(n)
|
|
FOR nr = 1 TO n
|
|
LET num$ = STR$(fibonacci(nr))
|
|
LET j = VAL((num$)[1:1])
|
|
LET actual(j) = actual(j)+1
|
|
NEXT nr
|
|
PRINT "First 1000 Fibonacci numbers"
|
|
PRINT "Digit Actual freq Expected freq"
|
|
FOR i = 1 TO 9
|
|
LET freq = frequency(i)*100
|
|
PRINT USING "###": i;
|
|
PRINT USING " ##.###": actual(i)/10;
|
|
PRINT USING " ##.###": freq
|
|
NEXT i
|
|
END
|