OPTION ARITHMETIC decimal_HIGH PRINT PRINT "〇に属するファレー分数列 :" PRINT "  ( 既約分数の分子分母が〇までの隣り合う分数 )" PRINT INPUT PROMPT "自然数? ":n PRINT "〇 = ";n PRINT DIM Q(n^2),W1(n^2),W2(n^2) LET c = 1 FOR i=1 TO n-1 FOR j=i+1 TO n IF i > 1 AND GCD(i,j) > 1 THEN GOTO 10 LET Q(c) = i/j LET W1(c) = i LET W2(c) = j LET c = c + 1 10 NEXT j NEXT i CALL sort (Q,W1,W2,c-1) PRINT " 0 / 1 = 0" FOR i=1 TO c-1 PRINT W1(i);"/";W2(i);" = ";Q(i) NEXT i PRINT " 1 / 1 = 1" PRINT PRINT PRINT "隣同士の 分母×分子 の差 (上から順に):" FOR i=1 TO c-2 PRINT W2(i)*W1(i+1) - W1(i)*W2(i+1);" "; NEXT i PRINT PRINT END EXTERNAL FUNCTION GCD(s,t) ! 最大公約数を求める関数 OPTION ARITHMETIC decimal_HIGH DO LET m=MOD(s,t) IF m=0 THEN EXIT DO LET s=t LET t=m LOOP LET gcd=t END FUNCTION EXTERNAL SUB sort(a(),b(),c(),m) OPTION ARITHMETIC decimal_HIGH FOR i=1 TO m-1 FOR j=i+1 TO m IF a(i)>a(j) THEN LET t0=a(j) LET a(j)=a(i) LET a(i)=t0 LET t1=b(j) LET b(j)=b(i) LET b(i)=t1 LET t2=c(j) LET c(j)=c(i) LET c(i)=t2 END IF NEXT j NEXT i END SUB