2章 Pell方程式と連分数展開


不定方程式 x2−my2=±1Pell方程式 と呼ぶ。
これは、mが2乗数でないとき、x=±1、y=0以外の解を必ず持つ。
また、sqrt(m) を以下のように表したとき、

1
sqrt(m) = a1------------------------
1
a2------------------
1
a3------------
a4 ……

sqrt(m)の連分数展開と呼ぶ。
このままでは、表記するのが大変なので(ソースを見てください)、

sqrt(m)=a1[a2, a3, a4, ……]

と略記する。


Pell方程式の解及び連分数展開の各桁は以下の漸化式より求められる。

an連分数展開の各桁の数
pn/qnn番目で打ち切ったときの部分和
Pn、Qn補助変数

これらの数について第n項目は、

ana1=int(sqrt(m))
 ……
an=int((a1+Pn)/Q1)
PnP1=0
P2=a1
 ……
Pn=an-1×Qn-1−Pn-1
QnQ1=1
Q2=m−a12
 ……
Qn=(m−Pn2)/Qn-1
pnp1=a1
p2=a2×a1+1
 ……
pn=an×pn-1+pn-2
qnq1=1
q2=a2  ……
qn=an×qn-1+qn-2

Qn=1となるnについて、 pn-1、qn-1が Pell方程式の解となる。


この漸化式をExcelの計算式で表してみる。

<計算式>
 ABCDEFG
1m=(mの値を代入)     
2nPnQnanpnqnpn^2-mqn^2
3101=INT(SQRT($B$1))=D31=E3^2-$B$1*F3^2
42=D3=$B$1-D3^2=INT(($D$3+B4)/C4)=D4*D3+1=D4=E4^2-$B$1*F4^2
53=D4*C4-B4=($B$1-B5^2)/C4=INT(($D$3+B5)/C5)=D5*E4+E3=D5*F4+F3=E5^2-$B$1*F5^2
64=D5*C5-B5=($B$1-B6^2)/C5=INT(($D$3+B6)/C6)=D6*E5+E4=D6*F5+F4=E6^2-$B$1*F6^2

n=1,2,3のときは直接式を書き込む。
n=4以降は、n=3の時の行をそのままコピーすると、 行、列の index が自動的に increment される。

B1に求める値を代入し、Cの4行目以降に1が現れるまで、計算式をコピーする。
Cのk行目が1となったとき、

E、Fのk−1行目が Pell方程式の解
Dの3行目〜k行目が連分数展開の各項

となる。


100以下で循環節が最も長くなるm=94の場合について、サンプルを示す。

 ABCDEFG
1m=94     
2nPnQnanpnqnpn^2-mqn^2
3101991-13
4291311016
53462293-5
6485397109
7579112613-10
862101223233
978351241128-15
108715114641512
119828129531336-15
121081511441714873
1311735850388771-10
1412810199455102589
151329118449319029-5
1614753652934673456
17158621490361153719-13
1816413121432952210641
19179118400696714132871-13

連分数展開

sqrt(94)=9 [1, 2, 3, 1, 1, 5, 1, 8, 1, 5, 1, 1, 3, 2, 1, 18]

Pell方程式の初期解

x=2143295
y=221064

となる。


前頁 目次 次頁

E-mail : kc2h-msm@asahi-net.or.jp
三島 久典