地蔵菩薩さんの選択用のテキストの中(P.34)に「ルート2」を連分数に展開したものが紹介されていた。UBASICというプログラム作成ソフトの付録に"confra.ub"というファイルネームで入っていた。’94年にこのプログラムをUBASICで動かしていろいろな平方根の性質を調べたことがある。今日はこのプログラムを十進Basicに移植することが出来た。これでまた選択の授業がうまくやれそうだ。
地蔵菩薩さんのテキストから

ルート2だと1+のあとに2+がずっと続くのでこのプログラムを動かすと、結果が 1[2] のように出力される
これは1+のあと2+ 2+ 2+ となることを表す。
ルート3だと1+のあと1+ 2+ 1+ 2+ が繰り返されるので、これが
1[1 2]と出力されます。どうして連分数で書けるのかは地蔵菩薩さんのテキストP.33を読んでみて下さい。連分数なんて知らなかった人は不思議な気分になりますよ。よかったらルート3を連分数に展開してみて下さい。(解答は後日)
無理数(循環しない無限小数)であると習ったルート2やルート3が「連分数」という視点から眺めると、「循環連分数」というものだと分かります。
おまけですが、このプログラムを動かして出力すると平方根は以下のようになります。
ルート5=2[4] 循環節1
ルート6=2[2 4] 循環節2
ルート7=2[1 1 1 4] 循環節4
ルート8=2[1 4] 循環節2
ルート10=3[6] 循環節1
ルート2が1[2]
ルート5が2[4]
ルート10が3[6]です何か気づきませんか?
ルート17が4[8]なんです。
一般には」どうなっているのでしょう。公式が得られます。
こうしてパソコンで調べると平方根と連分数のおもしろい関係が得られます。
このプログラムリストは次の通りです。「十進Basic」で試してみて下さい。
プログラムリスト
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
地蔵菩薩さんのテキストから

ルート2だと1+のあとに2+がずっと続くのでこのプログラムを動かすと、結果が 1[2] のように出力される
これは1+のあと2+ 2+ 2+ となることを表す。
ルート3だと1+のあと1+ 2+ 1+ 2+ が繰り返されるので、これが
1[1 2]と出力されます。どうして連分数で書けるのかは地蔵菩薩さんのテキストP.33を読んでみて下さい。連分数なんて知らなかった人は不思議な気分になりますよ。よかったらルート3を連分数に展開してみて下さい。(解答は後日)
無理数(循環しない無限小数)であると習ったルート2やルート3が「連分数」という視点から眺めると、「循環連分数」というものだと分かります。
おまけですが、このプログラムを動かして出力すると平方根は以下のようになります。
ルート5=2[4] 循環節1
ルート6=2[2 4] 循環節2
ルート7=2[1 1 1 4] 循環節4
ルート8=2[1 4] 循環節2
ルート10=3[6] 循環節1
ルート2が1[2]
ルート5が2[4]
ルート10が3[6]です何か気づきませんか?
ルート17が4[8]なんです。
一般には」どうなっているのでしょう。公式が得られます。
こうしてパソコンで調べると平方根と連分数のおもしろい関係が得られます。
このプログラムリストは次の通りです。「十進Basic」で試してみて下さい。
プログラムリスト
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