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)