62 lines
1.1 KiB
Plaintext
62 lines
1.1 KiB
Plaintext
CONST max = 2000
|
|
DIM SHARED stern(max + 2)
|
|
|
|
FUNCTION gcd (x, y)
|
|
WHILE y
|
|
t = y
|
|
y = x MOD y
|
|
x = t
|
|
WEND
|
|
gcd = x
|
|
END FUNCTION
|
|
|
|
SUB SternBrocot
|
|
stern(1) = 1
|
|
stern(2) = 1
|
|
|
|
i = 2: n = 2: ub = UBOUND(stern)
|
|
|
|
DO WHILE i < ub
|
|
i = i + 1
|
|
stern(i) = stern(n) + stern(n - 1)
|
|
i = i + 1
|
|
stern(i) = stern(n)
|
|
n = n + 1
|
|
LOOP
|
|
END SUB
|
|
|
|
SternBrocot
|
|
|
|
PRINT "The first 15 are: ";
|
|
FOR i = 1 TO 15
|
|
PRINT stern(i); " ";
|
|
NEXT i
|
|
|
|
PRINT : PRINT
|
|
PRINT " Index First nr."
|
|
d = 1
|
|
FOR i = 1 TO max
|
|
IF stern(i) = d THEN
|
|
PRINT USING " ######"; i; stern(i)
|
|
d = d + 1
|
|
IF d = 11 THEN d = 100
|
|
IF d = 101 THEN EXIT FOR
|
|
i = 0
|
|
END IF
|
|
NEXT i
|
|
|
|
PRINT : PRINT
|
|
d = 0
|
|
FOR i = 1 TO 1000
|
|
IF gcd(stern(i), stern(i + 1)) <> 1 THEN
|
|
d = gcd(stern(i), stern(i + 1))
|
|
EXIT FOR
|
|
END IF
|
|
NEXT i
|
|
|
|
IF d <> 0 THEN
|
|
PRINT "GCD of two consecutive members of the series up to the 1000th member is 1"
|
|
ELSE
|
|
PRINT "The GCD for index "; i; " and "; i + 1; " = "; d
|
|
END IF
|