38 lines
740 B
Plaintext
38 lines
740 B
Plaintext
FUNCTION farey (n, dsc)
|
|
b = 1: c = 1: d = n
|
|
|
|
IF dsc = TRUE THEN a = 1: c = n - 1
|
|
|
|
cnt = cnt + 1
|
|
IF n < 12 THEN PRINT a; "/"; b;
|
|
|
|
WHILE ((c <= n) AND NOT dsc) OR ((a > 0) AND dsc)
|
|
aa = a: bb = b: cc = c: dd = d
|
|
k = (n + b) \ d
|
|
a = cc: b = dd: c = k * cc - aa: d = k * dd - bb
|
|
cnt = cnt + 1
|
|
IF n < 12 THEN PRINT a; "/"; b;
|
|
WEND
|
|
|
|
IF n < 12 THEN PRINT
|
|
|
|
farey = cnt
|
|
END FUNCTION
|
|
|
|
CLS
|
|
CONST TRUE = -1: FALSE = NOT TRUE
|
|
|
|
FOR i = 1 TO 9
|
|
PRINT USING "F# ="; i;
|
|
t = farey(i, FALSE)
|
|
NEXT i
|
|
FOR i = 10 TO 11
|
|
PRINT USING "F## ="; i;
|
|
t = farey(i, FALSE)
|
|
NEXT i
|
|
PRINT
|
|
FOR i = 100 TO 900 STEP 100
|
|
PRINT USING "F#### = ######"; i; farey(i, FALSE)
|
|
NEXT i
|
|
PRINT USING "F1000 = ######"; farey(1000, FALSE)
|