gbさんの質問に関連して、連分数を簡単に計算できるプログラムを紹介する。
10進Basic というソフトで作ってある。もとはといえばUBASICというソフトに付属のプログラムがあり、これを10進Basicに移植した。私はこのプログラムの原理が分からなくて、ブログにのせて発表したことがあるが、回答は得られなかった。
とにかく便利。お試しあれ。
1.10進Basicのサイトからソフトをダウンロード
2.以下プログラムをコピー&ペーストし、ファイルネームをつけてテキストファイルにしておく。
3.10進Basicでファイルを読み込ませる。(ドラッグ&ドロップでも読める)
4.プログラムを走らせる。
例 ルート7
プログラムを実行すると
n= という入力ウィンドウがでるので、7を入力。
すると、出力テキストウィンドに
n=7
2 [ 1 1 1 4 ]
と出力される。
1 !
2 !
3 ! 2次無理数の連分数展開
4 !
5 !
6 ! filename confra.bas
7 !
8 !
9 !
10 !
20 !
30 !
40 !
50 !
100 !
110 INPUT PROMPT "n=":n
120 IF n=0 THEN STOP
130 LET qn=INT(SQR(n))
140 IF qn=SQR(n) THEN GOTO 500
150 PRINT qn;"[";
160 LET c=n-qn^2
170 LET a=qn
180 LET a1=a
190 LET c1=c
200 ! repeat
210 LET k=INT((qn+a)/c)
220 PRINT k;
230 LET a=c*k-a
240 LET c=INT((n-a^2)/c)
250 IF (a<>a1)OR(c<>c1) THEN GOTO 200
260 PRINT "]"
270 PRINT
280 GOTO 110
290 !
500 PRINT qn;"の2乗です。"
510 PRINT
520 GOTO 110
END
10進Basic というソフトで作ってある。もとはといえばUBASICというソフトに付属のプログラムがあり、これを10進Basicに移植した。私はこのプログラムの原理が分からなくて、ブログにのせて発表したことがあるが、回答は得られなかった。
とにかく便利。お試しあれ。
1.10進Basicのサイトからソフトをダウンロード
2.以下プログラムをコピー&ペーストし、ファイルネームをつけてテキストファイルにしておく。
3.10進Basicでファイルを読み込ませる。(ドラッグ&ドロップでも読める)
4.プログラムを走らせる。
例 ルート7
プログラムを実行すると
n= という入力ウィンドウがでるので、7を入力。
すると、出力テキストウィンドに
n=7
2 [ 1 1 1 4 ]
と出力される。
1 !
2 !
3 ! 2次無理数の連分数展開
4 !
5 !
6 ! filename confra.bas
7 !
8 !
9 !
10 !
20 !
30 !
40 !
50 !
100 !
110 INPUT PROMPT "n=":n
120 IF n=0 THEN STOP
130 LET qn=INT(SQR(n))
140 IF qn=SQR(n) THEN GOTO 500
150 PRINT qn;"[";
160 LET c=n-qn^2
170 LET a=qn
180 LET a1=a
190 LET c1=c
200 ! repeat
210 LET k=INT((qn+a)/c)
220 PRINT k;
230 LET a=c*k-a
240 LET c=INT((n-a^2)/c)
250 IF (a<>a1)OR(c<>c1) THEN GOTO 200
260 PRINT "]"
270 PRINT
280 GOTO 110
290 !
500 PRINT qn;"の2乗です。"
510 PRINT
520 GOTO 110
END