Pell 方程

数学 / 数论

本地源文件:docs/math__number-theory__pell-equation.md

Pell 方程

前置知识:连分数二次域

引入

本文讨论(广义)Pell 方程的求解.广义 Pell 方程是指关于 𝑥x 和 𝑦y 的不定方程

𝑥2−𝐷𝑦2=𝑁,x2−Dy2=N,

其中,𝐷D 是正整数且不是完全平方数1,𝑁N 是非零整数.狭义的 Pell 方程特指 𝑁 =1N=1 或 𝑁 = ±1N=±1 的特殊情形,有时也包括 𝑁 = ±4N=±4 的情形.广义 Pell 方程与在实二次整数环内寻找范数为 𝑁N 的二次整数紧密相关,而常常称作(狭义)Pell 方程的这些情形可以看作是寻找实二次整数环内的单位数.

当本文提及 Pell 方程时,特指 𝑁 =1N=1 的情形.相应地,𝑁 = −1N=−1 的情形称为负 Pell 方程2(negative Pell's equation).

解的结构

广义 Pell 方程的整数解 (𝑥,𝑦)(x,y) 和二次整数 𝑥 +𝑦√𝐷x+yD 联系密切,因此文献中 Pell 方程的解常常写作 𝑥 +𝑦√𝐷x+yD 的形式.因为二次整数的范数

𝑁(𝑥+𝑦√𝐷)=𝑥2−𝐷𝑦2,N(x+yD)=x2−Dy2,

所以,广义 Pell 方程大致相当于在求解范数为 𝑁N 的二次整数.但是,两者确实有细微的区别.当 𝑥x 和 𝑦y 都是整数时,𝑥 +𝑦√𝐷x+yD 一定是二次整数;反过来,二次整数未必要求 𝑥x 和 𝑦y 都是整数——在 𝐷 ≡1(mod4)D≡1(mod4) 的情形,𝑥x 和 𝑦y 还可以同时是半整数3.

这个区别在求解基本单位数时格外重要.因为二次整环中的单位数是指范数为 ±1±1 的二次整数.对于 𝐷 ≡2,3(mod4)D≡2,3(mod4),要找到这样的单位数,只需要求解广义 Pell 方程在 𝑁 = ±1N=±1 的情形即可;但是对于 𝐷 ≡1(mod4)D≡1(mod4),还需要考虑 𝑁 = ±4N=±4 的情形.下文 会讨论单位数的求解方法.

要理解广义 Pell 方程解的结构,需要从 Brahmagupta 恒等式 入手:

(𝑥21−𝐷𝑦21)(𝑥22−𝐷𝑦22)=(𝑥1𝑥2+𝐷𝑦1𝑦2)2−𝐷(𝑥1𝑦2+𝑥2𝑦1)2.(x12−Dy12)(x22−Dy22)=(x1x2+Dy1y2)2−D(x1y2+x2y1)2.

它相当于二次整数的范数保持乘法,即

𝑁(𝑥1+𝑦1√𝐷)𝑁(𝑥2+𝑦2√𝐷)=𝑁((𝑥1+𝑦1√𝐷)(𝑥2+𝑦2√𝐷))=𝑁((𝑥1𝑥2+𝐷𝑦1𝑦2)+(𝑥1𝑦2+𝑥2𝑦1)√𝐷).N(x1+y1D)N(x2+y2D)=N((x1+y1D)(x2+y2D))=N((x1x2+Dy1y2)+(x1y2+x2y1)D).

利用这一恒等式,可以利用方程 𝑥2 −𝐷𝑦2 =𝑁1x2−Dy2=N1 和方程 𝑥2 −𝐷𝑦2 =𝑁2x2−Dy2=N2 的整数解复合出方程 𝑥2 −𝐷𝑦2 =𝑁1𝑁2x2−Dy2=N1N2 的整数解.当然,从二次整数的角度看,解的复合就是二次整数的乘法,这就体现了将 Pell 方程的解记作二次整数形式的方便之处.特别地,取 𝑁1 =𝑁N1=N 和 𝑁2 =1N2=1 就可以发现,如果已知 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的一组解和相应的 Pell 方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的全体解,就可以得到 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 更多的解.当然,这种方法未必能够生成全部的解.但是,这至少说明理解 Pell 方程的解的结构对理解广义 Pell 方程的解的结构有重要作用.

Pell 方程

方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的几何意义是实轴在 𝑥x 轴、虚轴在 𝑦y 轴的双曲线.双曲线上的每个点都唯一对应了 𝑥 +𝑦√𝐷x+yD 的一个非零取值:双曲线的左支对应着 𝑥 +𝑦√𝐷x+yD 的负值,右支则对应正值.而且,在每一支上,双曲线自下而上对应的 𝑥 +𝑦√𝐷x+yD 的取值是严格递增的.二次整数的取值给 Pell 方程的解赋予了自然的顺序.

双曲线同时关于 𝑥x 轴和 𝑦y 轴对称,因此讨论 Pell 方程的解只需要考虑在第一象限内的那一段即可,其余解可以通过对称性获得.这相当于只考虑 𝑥 +𝑦√𝐷 >1x+yD>1 的解.如果方程除了 ( ±1,0)(±1,0) 之外还存在不平凡的解,那么一定在第一象限内存在 𝑥 +𝑦√𝐷x+yD 取值最小的解 (𝑥1,𝑦1)(x1,y1),这也是第一象限内(不含坐标轴)横纵坐标都最小的整点,它称为 Pell 方程的基本解(fundamental solution)4.根据前文的讨论,满足 𝑥𝑘 +𝑦𝑘√𝐷 =(𝑥1 +𝑦1√𝐷)𝑘xk+ykD=(x1+y1D)k 的整数对 (𝑥𝑘,𝑦𝑘)(xk,yk) 都是 Pell 方程的解,而且都在第一象限.反过来,这也的确是 Pell 方程在第一象限内的全部解.再利用对称性,就可以得到如下结论:

定理

设 Pell 方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的基本解是 (𝑥1,𝑦1)(x1,y1).那么,它的全部解就是

{(𝑥,𝑦):𝑥+𝑦√𝐷=±(𝑥1+𝑦1√𝐷)𝑘,𝑘∈𝐙}.{(x,y):x+yD=±(x1+y1D)k,k∈Z}.证明

首先证明第一象限中不存在其他解.不妨设存在其他解 𝑥 +𝑦√𝐷x+yD 且对于某个 𝑘 ≥0k≥0

𝑥𝑘+𝑦𝑘√𝐷<𝑥+𝑦√𝐷<𝑥𝑘+1+𝑦𝑘+1√𝐷.xk+ykD<x+yD<xk+1+yk+1D.

几何意义上,这相当于说整点 (𝑥,𝑦)(x,y) 落入了双曲线上 (𝑥𝑘,𝑦𝑘)(xk,yk) 和 (𝑥𝑘+1,𝑦𝑘+1)(xk+1,yk+1) 之间(不含端点).将不等式同时乘以 𝑥𝑘 −𝑦𝑘√𝐷 =(𝑥𝑘 +𝑦𝑘√𝐷)−1xk−ykD=(xk+ykD)−1 就得到

1<(𝑥+𝑦√𝐷)(𝑥𝑘−𝑦𝑘√𝐷)=(𝑥𝑥𝑘−𝐷𝑦𝑦𝑘)+(𝑥𝑘𝑦−𝑥𝑦𝑘)√𝐷<𝑥1+𝑦1√𝐷.1<(x+yD)(xk−ykD)=(xxk−Dyyk)+(xky−xyk)D<x1+y1D.

根据前文提到的单调性,这个不等式就说明 (𝑥𝑥𝑘 −𝐷𝑦𝑦𝑘,𝑥𝑘𝑦 −𝑥𝑦𝑘)(xxk−Dyyk,xky−xyk) 是位于 (1,0)(1,0) 和 (𝑥1,𝑦1)(x1,y1) 之间的整点.这与 (𝑥1,𝑦1)(x1,y1) 的选取矛盾.

将第一象限的解扩展到整个平面时,指数 𝑘k 取相反数(即整体取倒数)就是关于 𝑥x 轴对称,整体取相反数则是关于原点对称.再加上 𝑘 =0k=0 时的平凡解,就得到 Pell 方程的全部解.

前文的讨论只是假设了基本解的存在.现在要说明的是,Pell 方程总是存在非平凡的解.

定理

Pell 方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 总是存在除了 ( ±1,0)(±1,0) 之外的整数解.

证明

首先,Dirichlet 定理 表明存在无数对正整数 (𝑥,𝑦)(x,y) 使得

∣𝑥𝑦−√𝐷∣≤1𝑦2|xy−D|≤1y2

成立,它们都满足不等式

|𝑥2−𝐷𝑦2|=𝑦2∣𝑥𝑦−√𝐷∣∣𝑥𝑦+√𝐷∣≤1𝑦2+2√𝐷<1+2√𝐷.|x2−Dy2|=y2|xy−D||xy+D|≤1y2+2D<1+2D.

因而,必然存在整数 𝑚 ∈( −1 −2√𝐷,1 +2√𝐷)m∈(−1−2D,1+2D) 使得有无数对 (𝑥,𝑦)(x,y) 都满足 𝑥2 −𝐷𝑦2 =𝑚x2−Dy2=m.将这些 (𝑥,𝑦)(x,y) 根据对 𝑚m 的余数分类,就知道对某一对整数 (𝑥0,𝑦0)(x0,y0),一定存在无数对 (𝑥,𝑦)(x,y) 使得 𝑥 ≡𝑥0(mod𝑚)x≡x0(modm) 以及 𝑦 ≡𝑦0(mod𝑚)y≡y0(modm) 成立.任取满足这些条件的两对互异的 (𝑥1,𝑦1)(x1,y1) 和 (𝑥2,𝑦2)(x2,y2),则

𝑥1+𝑦1√𝐷𝑥2+𝑦2√𝐷=𝑥1𝑥2−𝐷𝑦1𝑦2𝑚+𝑥2𝑦1−𝑥1𝑦2𝑚√𝐷.x1+y1Dx2+y2D=x1x2−Dy1y2m+x2y1−x1y2mD.

因为根据同余关系有

𝑥1𝑥2−𝐷𝑦1𝑦2≡𝑥20−𝐷𝑦20=𝑚≡0(mod|𝑚|),𝑥2𝑦1−𝑥1𝑦2≡𝑥0𝑦0−𝑥0𝑦0=0(mod|𝑚|),x1x2−Dy1y2≡x02−Dy02=m≡0(mod|m|),x2y1−x1y2≡x0y0−x0y0=0(mod|m|),

这说明上式右侧得到的是整数解.而且,因为 (𝑥1,𝑦1) ≠(𝑥2,𝑦2)(x1,y1)≠(x2,y2),它并不平凡.这就说明 Pell 方程的确存在非平凡解.

当然,本节提供的是非构造性的证明,在下文讨论 Pell 方程的解法时,会直接利用连分数的渐近分数构造出 Pell 方程的解,因而提供了 Pell 方程存在非平凡解的另一种证明.另外,尽管本节得到的 Pell 方程解的结构与实二次整数环的单位数的结构是一致的,但是对于 𝐷 ≡1(mod4)D≡1(mod4) 的情形,本节并没有完全解决相应的二次整数环的单位数的结构问题,下文将进一步讨论.

广义 Pell 方程

广义 Pell 方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的图像同样是平面上的双曲线,同样以 𝑥x 轴和 𝑦y 轴为对称轴.前文已经指出,方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的部分解可能只相差一个 Pell 方程解的因子,这意味着可以将方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的解划分为等价类.对于方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的两个解 (𝑥1,𝑦1)(x1,y1) 和 (𝑥2,𝑦2)(x2,y2),如果存在 Pell 方程的解 (𝑢,𝑣)(u,v) 使得 𝑥2 +𝑦2√𝐷 =(𝑥1 +𝑦1√𝐷)(𝑢 +𝑣√𝐷)x2+y2D=(x1+y1D)(u+vD) 成立,那么称解 (𝑥1,𝑦1)(x1,y1) 和 (𝑥2,𝑦2)(x2,y2) 等价.两个解等价的充分必要条件是

𝑁∣(𝑥1𝑥2−𝐷𝑦1𝑦2), 𝑁∣(𝑥2𝑦1−𝑥1𝑦2).N∣(x1x2−Dy1y2), N∣(x2y1−x1y2).

因为 Pell 方程的解相对容易求出,一个自然的想法是在上述的每个等价类中各求出一个解.只要知道这些解,就可以利用相应的 Pell 方程的解得到所要求的广义 Pell 方程的全部解.在广义 Pell 方程的解的等价类中,由于对称性,每个等价类都存在纵坐标 𝑦y 非负但是尽可能小的解:如果这样的解唯一,它就称为该等价类的基本解;否则,该等价类必然有两个 𝑦y 非负且最小的解,而且它们关于 𝑦y 轴对称,此时选择 𝑥 >0x>0 的那个作为基本解.由此,求解广义 Pell 方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N,就相当于求解它的基本解集 𝑈U.设它对应的 Pell 方程的基本解是 (𝑟,𝑠)(r,s),则广义 Pell 方程的全部解的集合是

{(𝑥,𝑦):𝑥+𝑦√𝐷=±(𝑟+𝑠√𝐷)𝑘(𝑢+𝑣√𝐷),𝑘∈𝐙,𝑢+𝑣√𝐷∈𝑈}.{(x,y):x+yD=±(r+sD)k(u+vD),k∈Z,u+vD∈U}.

广义 Pell 方程的基本解必然是有限的.这是因为从上面的通解表达式可知,绝对值 |𝑢 +𝑣√𝐷||u+vD| 必然位于 𝑟 −𝑠√𝐷r−sD 和 𝑟 +𝑠√𝐷r+sD 之间.文末的参考文献中提供了关于基本解的坐标的范围的更严格的估计.当然,与 Pell 方程的情形不同,广义 Pell 方程可能没有解.

利用广义 Pell 方程的一个解 (𝑢,𝑣)(u,v) 和 Pell 方程的基本解 (𝑟,𝑠)(r,s) 得到同一个等价类中的全部解的方法,除了利用解的复合之外,还可以利用如下递推关系

𝑥𝑘=2𝑟𝑥𝑘−1−𝑥𝑘−2, 𝑦𝑘=2𝑟𝑦𝑘−1−𝑦𝑘−2,xk=2rxk−1−xk−2, yk=2ryk−1−yk−2,

其中,𝑥𝑘 +𝑦𝑘√𝐷 =(𝑟 +𝑠√𝐷)𝑘(𝑢 +𝑣√𝐷)xk+ykD=(r+sD)k(u+vD).这是因为 𝑥𝑛xn 和 𝑦𝑛yn 都可以对某一对实数 (𝐴,𝐵)(A,B) 写成 𝐴(𝑟 +𝑠√𝐷)𝑘 +𝐵(𝑟 −𝑠√𝐷)𝑘A(r+sD)k+B(r−sD)k 的形式,而根据 Vieta 定理,𝑟 ±𝑠√𝐷r±sD 是方程 𝑥2 −2𝑟𝑥 +1 =0x2−2rx+1=0 的两个实根,进而 𝑥𝑛xn 和 𝑦𝑛yn 都满足上述的二阶常系数递推关系.相较于解的复合,该递推公式有更少的乘法次数.

求解方法

Pell 方程和广义 Pell 方程的求解都可以基于连分数进行.

PQa 算法

本文讨论的算法都基于 PQa 算法,它可以用于求出特定的二次无理数的连分数展开.

设整数 𝑃0,𝑄0,𝐷P0,Q0,D 满足 𝑄0 ≠0Q0≠0,𝐷 >0D>0 且不是完全平方数,以及 𝑃20 ≡𝐷(mod𝑄0)P02≡D(modQ0).那么,二次无理数

𝜔=𝑃0+√𝐷𝑄0ω=P0+DQ0

的连分数展开 [𝑎0,𝑎1,⋯][a0,a1,⋯] 可以通过如下 递推公式 求得:

𝑎𝑘=⌊𝑃𝑘+√𝐷𝑄𝑘⌋, 𝑃𝑘+1=𝑎𝑘𝑄𝑘−𝑃𝑘, 𝑄𝑘+1=𝐷−𝑃2𝑘+1𝑄𝑘.ak=⌊Pk+DQk⌋, Pk+1=akQk−Pk, Qk+1=D−Pk+12Qk.

进而,𝜔ω 的第 𝑘k 个渐近分数的分子和分母 𝐴𝑘Ak 和 𝐵𝑘Bk 由如下 递推公式 给出:

𝐴𝑘=𝑎𝑘𝐴𝑘−1+𝐴𝑘−2, 𝐵𝑘=𝑎𝑘𝐵𝑘−1+𝐵𝑘−2Ak=akAk−1+Ak−2, Bk=akBk−1+Bk−2

且 𝐴−1 =1A−1=1,𝐴−2 =0A−2=0,𝐵−1 =0B−1=0,𝐵−2 =1B−2=1

这些公式的正确性已经在连分数一文中得到证明.那里也说明了,因为二次无理数是 循环连分数,所以,三元组 (𝑃𝑘,𝑄𝑘,𝑎𝑘)(Pk,Qk,ak) 最终将进入循环,算法总可以在有限步内终止.不妨设循环节的最小长度是 ℓℓ,且循环的最早的起始位置是 𝑘0k0,则二次无理数的连分数展开可以写作

𝜔=[𝑎0,⋯,𝑎𝑘0−1,―――――――𝑎𝑘0,⋯,𝑎𝑘0+ℓ−1].ω=[a0,⋯,ak0−1,ak0,⋯,ak0+ℓ−1―].

利用 PQa 算法解决 Pell 方程,需要建立如下结论:

定理

继续上述记号.设 𝐺𝑘 =𝑄0𝐴𝑘 −𝑃0𝐵𝑘Gk=Q0Ak−P0Bk,则整数对 (𝐺𝑘−1,𝐵𝑘−1)(Gk−1,Bk−1) 满足关系式

𝐺2𝑘−1−𝐷𝐵2𝑘−1=(−1)𝑘𝑄0𝑄𝑘,Gk−12−DBk−12=(−1)kQ0Qk,

且它们的最大公因数 gcd(𝐺𝑘−1,𝐵𝑘−1)gcd(Gk−1,Bk−1) 整除 𝑄𝑘Qk

证明

设 𝜔ω 的连分数展开中,第 𝑘k 个余项(完全商)为 𝜔𝑘ωk,即

𝜔=[𝑎0,𝑎1,⋯,𝑎𝑘−1,𝜔𝑘]=𝜔𝑘𝐴𝑘−1+𝐴𝑘−2𝜔𝑘𝐵𝑘−1+𝐵𝑘−2.ω=[a0,a1,⋯,ak−1,ωk]=ωkAk−1+Ak−2ωkBk−1+Bk−2.

将 𝜔 =(𝑃0 +√𝐷)/𝑄0ω=(P0+D)/Q0 和 𝜔𝑘 =(𝑃𝑘 +√𝐷)/𝑄𝑘ωk=(Pk+D)/Qk 代入上式,就得到

𝑃0+√𝐷𝑄0=(𝑃𝑘+√𝐷)𝐴𝑘−1+𝑄𝑘𝐴𝑘−2(𝑃𝑘+√𝐷)𝐵𝑘−1+𝑄𝑘𝐵𝑘−2.P0+DQ0=(Pk+D)Ak−1+QkAk−2(Pk+D)Bk−1+QkBk−2.

消去左右两侧的分母并比较有理部分和无理部分的系数,再代入 𝐺𝑘Gk 的表达式,就得到如下等式:

𝐺𝑘−1=𝑃𝑘𝐵𝑘−1+𝑄𝑘𝐵𝑘−2,𝐷𝐵𝑘−1=𝑃𝑘𝐺𝑘−1+𝑄𝑘𝐺𝑘−2.Gk−1=PkBk−1+QkBk−2,DBk−1=PkGk−1+QkGk−2.

因此,将一式乘以 𝐺𝑘−1Gk−1 减去二式乘以 𝐵𝑘−1Bk−1,就有

𝐺2𝑘−1−𝐷𝐵2𝑘−1=(𝐵𝑘−2𝐺𝑘−1−𝐵𝑘−1𝐺𝑘−2)𝑄𝑘=(𝐴𝑘−1𝐵𝑘−2−𝐵𝑘−1𝐴𝑘−2)𝑄0𝑄𝑘=(−1)𝑘𝑄0𝑄𝑘.Gk−12−DBk−12=(Bk−2Gk−1−Bk−1Gk−2)Qk=(Ak−1Bk−2−Bk−1Ak−2)Q0Qk=(−1)kQ0Qk.

最后一步利用了渐近分数的 差分公式.这就证明了第一个结论.

为了证明第二个结论,将 𝐺𝑘Gk 的表达式代入第一个结论,有

(𝑄0𝐴𝑘−1−𝑃0𝐵𝑘−1)2−𝐷𝐵2𝑘−1=(−1)𝑘𝑄0𝑄𝑘.(Q0Ak−1−P0Bk−1)2−DBk−12=(−1)kQ0Qk.

所以,利用 𝑄0 ∣(𝑃20 −𝐷)Q0∣(P02−D)

𝑄0𝐴2𝑘−1+(𝑃20−𝐷𝑄0𝐵𝑘−1−2𝑃0𝐴𝑘−1)𝐵𝑘−1=(−1)𝑘𝑄𝑘.Q0Ak−12+(P02−DQ0Bk−1−2P0Ak−1)Bk−1=(−1)kQk.

故而,gcd(𝐺𝑘−1,𝐵𝑘−1) =gcd(𝑄0𝐴𝑘−1,𝐵𝑘−1)gcd(Gk−1,Bk−1)=gcd(Q0Ak−1,Bk−1) 整除 𝑄𝑘Qk

这个结论提供了一种寻找方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的解的方法.如果合理地选择 𝑄0 >0Q0>0 并选择 𝑃0P0 为同余方程 𝑃20 ≡𝐷(mod𝑄0)P02≡D(modQ0) 的解,那么通过对 (𝑃0 +√𝐷)/𝑄0(P0+D)/Q0 执行 PQa 算法,直到找到 ( −1)𝑘𝑄0𝑄𝑘 =𝑁(−1)kQ0Qk=N,此时 (𝐺𝑘−1,𝐵𝑘−1)(Gk−1,Bk−1) 就成为原方程的一组解.而且,如果 𝑄𝑘 = ±1Qk=±1,那么这样得到的解一定是本原解,也就是说 𝐺𝑘−1Gk−1 和 𝐵𝑘−1Bk−1 一定是互素的.

这个思想是解决 Pell 方程和广义 Pell 方程的核心.理解了这一思想后,下面就着手处理算法的一些细节,并证明所有的解都可以通过该方式得到.

Pell 方程

要解决 Pell 方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1,只需要对 (𝑃0,𝑄0,𝐷) =(0,1,𝐷)(P0,Q0,D)=(0,1,D) 运行 PQa 算法,直到出现 ( −1)𝑘𝑄𝑘 =1(−1)kQk=1,此时 (𝐴𝑘−1,𝐵𝑘−1)(Ak−1,Bk−1) 就是 Pell 方程的一组解(因为 𝐺𝑘−1Gk−1 此时就是 𝐴𝑘−1Ak−1).当然,对于 Pell 方程,对该过程可以进行更精确的描述.

首先,解一定出现在循环节的末尾处.上述过程相当于对 √𝐷D 做连分数展开.对此,已经有 结论

√𝐷=[⌊√𝐷⌋,―――――――――𝑎1,⋯,𝑎ℓ−1,2⌊√𝐷⌋].D=[⌊D⌋,a1,⋯,aℓ−1,2⌊D⌋―].

此处,循环节长度为 ℓℓ,且起始位置是第 11 项(下标从 00 开始).而且,它的第 ℓℓ 项余项等于 ⌊√𝐷⌋ +√𝐷⌊D⌋+D,这说明 𝑄ℓ =1Qℓ=1.因此,如果 ℓℓ 是偶数,那么 (𝐴ℓ−1,𝐵ℓ−1)(Aℓ−1,Bℓ−1) 就是 Pell 方程的一组非平凡解;如果 ℓℓ 是奇数,那么 (𝐴2ℓ−1,𝐵2ℓ−1)(A2ℓ−1,B2ℓ−1) 就是 Pell 方程的一组非平凡解.

接下来要说明,刚刚得到的这组解一定是基础解.这个结论基于两点理由:第一,Pell 方程的所有正整数解 (𝑥,𝑦)(x,y) 对应的分数 𝑥/𝑦x/y 都出现在 √𝐷D 的渐近分数中,这就保证了 (𝑥,𝑦)(x,y) 必定是 PQa 算法过程中的某个 (𝐴𝑘,𝐵𝑘)(Ak,Bk);第二,除了循环节末尾,不会再出现其他位置有 𝑄𝑘 =1Qk=1,因为 𝐴𝑘Ak 和 𝐵𝑘Bk 的递推关系保证了它们的大小随着下标增加而增加,所以最小的正整数解(即基础解)必然出现在刚刚指明的位置.这两点理由可以分别从如下的两条定理得出:

定理

设方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 有正整数解 (𝑥,𝑦)(x,y),如果 |𝑁| <√𝐷|N|<D,那么 𝑥𝑦xy 一定等于 √𝐷D 的渐近分数.

证明

当 𝑁 >0N>0 时,因为 𝑥2 −𝐷𝑦2 >0x2−Dy2>0,所以 𝑥 >𝑦√𝐷x>yD.故而,有

∣𝑥𝑦−√𝐷∣=𝑁𝑦(𝑥+𝑦√𝐷)<𝑁2𝑦2√𝐷<12𝑦2.|xy−D|=Ny(x+yD)<N2y2D<12y2.

根据 Legendre 判别法 可知,𝑥𝑦xy 是 √𝐷D 的渐近分数.

当 𝑁 <0N<0 时,𝑥 >𝑦√𝐷x>yD 不再成立.所以,转而考虑方程 𝑦2 −1𝐷𝑥2 = −𝑁𝐷y2−1Dx2=−ND 的解.因为 |𝑁|𝐷 <√1𝐷|N|D<1D,所以上面的论证依然成立.这说明 𝑦𝑥yx 是 1√𝐷1D 的渐近分数.根据 倒数定理 可知,𝑥𝑦xy 也是 √𝐷D 的渐近分数.

定理

在对 (𝑃0,𝑄0,𝐷) =(0,1,𝐷)(P0,Q0,D)=(0,1,D) 运行上述 PQa 算法的过程中,𝑄𝑘 =1Qk=1 必然推出 ℓ ∣𝑘ℓ∣k

证明

在 √𝐷D 的连分数展开中,除了第 00 个余项,所有其他余项都是 纯循环连分数.设 𝑄𝑘 =1Qk=1.根据 Galois 的结论,必然有余项 𝜔𝑘 =𝑃𝑘 +√𝐷 >1ωk=Pk+D>1,且它的共轭 −1 <𝑃𝑘 −√𝐷 <0−1<Pk−D<0,这说明 𝑃𝑘 =⌊√𝐷⌋Pk=⌊D⌋.因此,余项 𝜔𝑘ωk 就等于 𝜔ℓωℓ.但是,余项的重复意味着连分数的循环,如果 𝑘k 不是 ℓℓ 的整数倍,就与 ℓℓ 是最小正周期相矛盾.所以,必然有 ℓ ∣𝑘ℓ∣k

综合本节的讨论可知,只要对 √𝐷D 做连分数展开,亦即以 (𝑃0,𝑄0,𝐷) =(0,1,𝐷)(P0,Q0,D)=(0,1,D) 为起点做 PQa 算法,当首次得到 𝑄ℓ =1Qℓ=1 时,就到达了第一个循环节的末尾.此时,如果 ℓℓ 是偶数,那么 (𝐴ℓ−1,𝐵ℓ−1)(Aℓ−1,Bℓ−1) 就是 Pell 方程的基本解;否则,(𝐴2ℓ−1,𝐵2ℓ−1)(A2ℓ−1,B2ℓ−1) 是 Pell 方程的基本解.对于循环节长度 ℓℓ 为奇数的情形,并不需要继续 PQa 算法到两倍的循环节处,马上就会说明 𝐴2ℓ−1 +𝐵2ℓ−1√𝐷 =(𝐴ℓ−1 +𝐵ℓ−1√𝐷)2A2ℓ−1+B2ℓ−1D=(Aℓ−1+Bℓ−1D)2,因而可以直接从 (𝐴ℓ−1,𝐵ℓ−1)(Aℓ−1,Bℓ−1) 直接计算出 Pell 方程的基本解.Pell 方程所有其他解都可以通过 Pell 方程的基本解计算.

示例

  1. 求解方程 𝑥2 −14𝑦2 =1x2−14y2=1

对 (𝑃0,𝑄0,𝐷) =(0,1,14)(P0,Q0,D)=(0,1,14) 运行 PQa 算法结果如下:(标红部分为第一个循环节)

𝑘k𝑃P𝑄Q𝑎a𝐴A𝐵B𝐺G𝐺2 −𝐷𝐵2G2−DB2
00001133331133−5−5
1133551144114422
222222221111331111−5−5
33225511151544151511
443311661011012727101101−5−5
55335511116116313111611622

循环节长度 ℓ =4ℓ=4 为偶数.方程的最小正整数解为 (𝐺3,𝐵3) =(15,4)(G3,B3)=(15,4)

  1. 求解方程 𝑥2 −41𝑦2 =1x2−41y2=1

对 (𝑃0,𝑄0,𝐷) =(0,1,41)(P0,Q0,D)=(0,1,41) 运行 PQa 算法结果如下:(标红部分为第一个循环节)

𝑘k𝑃P𝑄Q𝑎a𝐴A𝐵B𝐺G𝐺2 −𝐷𝐵2G2−DB2
00001166661166−5−5
11665522131322131355
224455223232553232−1−1
3366111212397397626239739755
44665522826826129129826826−5−5
55445522204920493203202049204911
66661112122541425414396939692541425414−5−5
77665522528775287782588258528775287755

循环节长度 ℓ =3ℓ=3 为奇数.方程的最小正整数解为 (𝐺5,𝐵5) =(2049,320)(G5,B5)=(2049,320).它也可以通过 (𝐺2,𝐵2) =(32,5)(G2,B2)=(32,5) 计算得出:

(32+5√41)2=2049+320√41.(32+541)2=2049+32041.

负 Pell 方程

根据上一节的讨论可知,负 Pell 方程的解也必然对应于 √𝐷D 的渐近分数,而且只能出现在 ( −1)𝑘𝑄𝑘 = −1(−1)kQk=−1 处.这只能出现在循环节的末尾.因此,负 Pell 方程有解,当且仅当循环节长度 ℓℓ 是奇数.当解存在时,(𝐴ℓ−1,𝐵ℓ−1)(Aℓ−1,Bℓ−1) 就是负 Pell 方程的基本解.它的求解方法和上一节是一致的.

利用前文对于 Pell 方程解的结构的证明相仿的思路,可以证明如下结论:

定理

设方程 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 有解,且基本解是 (𝑥1,𝑦1)(x1,y1).那么,𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的所有整数解都属于集合

{(𝑥,𝑦):𝑥+𝑦√𝐷=±(𝑥1+𝑦1√𝐷)𝑘,𝑘∈𝐙}.{(x,y):x+yD=±(x1+y1D)k,k∈Z}.

特别地,满足 𝑥2 +𝑦2√𝐷 =(𝑥1 +𝑦1√𝐷)2x2+y2D=(x1+y1D)2 的整数解 (𝑥2,𝑦2)(x2,y2) 正是 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的基本解.

证明

由于对称性,只需要考虑正整数解,即 𝑥 +𝑦√𝐷 >1x+yD>1 的情形.但是由于 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 是两段双曲线,所以 𝑥 +𝑦√𝐷x+yD 无法和 (𝑥,𝑦)(x,y) 建立一一对应.为了处理这种困难,首先证明上述的 (𝑥2,𝑦2)(x2,y2) 是 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的基本解.

显然,(𝑥2,𝑦2)(x2,y2) 是 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的解.如果设 (𝑧,𝑤)(z,w) 是 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的基本解,那么必然有 1 <𝑧 +𝑤√𝐷 ≤𝑥2 +𝑦2√𝐷1<z+wD≤x2+y2D.如果右侧的不等式不含有等号,那么将不等式同除以 𝑥1 +𝑦1√𝐷x1+y1D 就得到 −𝑥1 +𝑦1√𝐷 <(𝑧 +𝑤√𝐷)( −𝑥1 +𝑦1√𝐷) <𝑥1 +𝑦1√𝐷−x1+y1D<(z+wD)(−x1+y1D)<x1+y1D.将该不等式的中间项的表达式展开就能得到 𝑥′ +𝑦′√𝐷x′+y′D 的形式,它的范数是 −1−1 且 (𝑥′,𝑦′)(x′,y′) 也是整数解.将该不等式取倒数,就发现 −𝑥′ +𝑦′√𝐷−x′+y′D 同样落入 −𝑥1 +𝑦1√𝐷−x1+y1D 和 𝑥1 +𝑦1√𝐷x1+y1D 之间.二次整数 ±𝑥′ +𝑦′√𝐷±x′+y′D 互为倒数,必然有一个大于 11.但是 11 和 𝑥1 +𝑦1√𝐷x1+y1D 不应该再出现别的范数为 −1−1 的二次整数,这与 𝑥1 +𝑦1√𝐷x1+y1D 的最小性矛盾.所以,必然成立 𝑥2 +𝑦2√𝐷 =𝑧 +𝑤√𝐷x2+y2D=z+wD,即 (𝑥2,𝑦2)(x2,y2) 是方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的基本解.

基于此,如果出现方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的解 (𝑥,𝑦)(x,y) 不对应某个 (𝑥1 +𝑦1√𝐷)𝑘(x1+y1D)k,那么必然存在 𝑘k 使得 (𝑥1 +𝑦1√𝐷)2𝑘 <𝑥 +𝑦√𝐷 <(𝑥1 +𝑦1√𝐷)2𝑘+2(x1+y1D)2k<x+yD<(x1+y1D)2k+2,消去因子 (𝑥1 +𝑦1)2𝑘+1(x1+y1)2k+1,就说明存在位于 −𝑥1 +𝑦1√𝐷−x1+y1D 和 𝑥1 +𝑦1√𝐷x1+y1D 之间的范数为 ±1±1 的二次整数 𝑥′ +𝑦′√𝐷 ≠1x′+y′D≠1.重复上一段利用倒数的论证可知,这与 𝑥1 +𝑦1√𝐷x1+y1D 的最小性矛盾.因而原命题得证.

因为 (𝐴ℓ−1,𝐵ℓ−1)(Aℓ−1,Bℓ−1) 是负 Pell 方程的最小正整数解,而 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的所有正整数解都出现在集合

{(𝑥,𝑦):𝑥+𝑦√𝐷=(𝐴ℓ−1+𝐵ℓ−1√𝐷)𝑘,𝑘∈𝐍+}{(x,y):x+yD=(Aℓ−1+Bℓ−1D)k,k∈N+}

中,又因为这些正整数解必然对应 √𝐷D 的在循环节末尾(前一位)处的渐近分数,而且渐近分数的分子和分母是严格单调递增的,所以对所有 𝑘 ∈𝐍+k∈N+ 总是有

(𝐴ℓ−1+𝐵ℓ−1√𝐷)𝑘=𝐴𝑘ℓ−1+𝐵𝑘ℓ−1√𝐷.(Aℓ−1+Bℓ−1D)k=Akℓ−1+Bkℓ−1D.

在所有这些正整数解中,𝑘k 为奇数时就是负 Pell 方程的解,𝑘k 为偶数时就是 Pell 方程的解,两者交替出现.

判断负 Pell 方程是否有解,需要计算 √𝐷D 连分数展开的循环节的长度,这并不容易计算,因此希望能够找到更简单的判断方法.但是,目前并没有条件简明、容易计算的判断方法5.此处仅仅提供一个简单的结论.

定理

方程 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 有解,则 44 不能整除 𝐷D 且 𝐷D 不含有 4𝑘 +34k+3 型的素因子.反过来,如果 𝐷 =2D=2 或 𝐷D 是 4𝑘 +14k+1 型的素数,那么方程必然有解.

证明

首先,负 Pell 方程有解,就意味着 −1−1 是 𝐷D 的二次剩余,因而 −1−1 也是 𝐷D 的任意一个因子 𝑑d 的二次剩余,故而 𝑑 ≠4d≠4 且 𝑑d 不是 4𝑘 +34k+3 型素数.反过来,方程 𝑥2 −2𝑦2 = −1x2−2y2=−1 的解有非平凡解 (1,1)(1,1).剩下的就是 𝐷D 是 4𝑘 +14k+1 型素数的情形.

设 𝐷D 是 4𝑘 +14k+1 型素数,要证明方程 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 有解.思路是通过 Pell 方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的基本解 (𝑢,𝑣)(u,v) 入手,构造出 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 的解 (𝛼,𝛽)(α,β).如果 𝑢u 是偶数,将 𝑢2 −𝐷𝑣2 =1u2−Dv2=1 两侧对 44 取模,就得到 𝑣2 ≡ −1(mod4)v2≡−1(mod4),但是 −1−1 并不是模 44 的二次剩余.这个矛盾说明 𝑢u 是奇数.考察等式 𝐷𝑣2 =𝑢2 −1 =(𝑢 +1)(𝑢 −1)Dv2=u2−1=(u+1)(u−1).因为 𝑢u 是奇数,所以 gcd(𝑢 +1,𝑢 −1) =gcd(𝑢 +1,2) =2gcd(u+1,u−1)=gcd(u+1,2)=2.根据这一事实,将 𝐷𝑣2Dv2 的因子分给 𝑢 +1u+1 和 𝑢 −1u−1,必然一个是 2𝛼22α2,另一个是 2𝐷𝛽22Dβ2,其中,𝛼α 和 𝛽β 是互素的正整数而且 𝑣 =2𝛼𝛽v=2αβ.将 𝑢 =𝛼2 +𝐷𝛽2u=α2+Dβ2 和 𝑣 =2𝛼𝛽v=2αβ 代入 𝑢2 −𝐷𝑣2 =1u2−Dv2=1 就得到 𝛼2 −𝐷𝛽2 = ±1α2−Dβ2=±1.因为 (𝑢,𝑣)(u,v) 是 Pell 方程的基本解而且 (𝛼,𝛽)(α,β) 是比 (𝑢,𝑣)(u,v) 更小的正整数对,这个等式右侧不能是 +1+1,故而只能是 −1−1.这就证明 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 存在解 (𝛼,𝛽)(α,β)

如果 𝐷D 是合数,那么不含有 4𝑘 +34k+3 型素因子且没有平方因子也不能保证方程 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 有解,例如 𝑥2 −34𝑦2 = −1x2−34y2=−1 就没有解.

示例

利用上面的示例中的计算结果可知,方程 𝑥2 −14𝑦2 = −1x2−14y2=−1 无解,且方程 𝑥2 −41𝑦2 = −1x2−41y2=−1 的最小正整数解为 (𝐺2,𝐵2) =(32,5)(G2,B2)=(32,5)

范数为 ±4 的情形

接下来讨论方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的解.此时,解的性态取决于 𝐷mod4Dmod4 的大小.

有些情形是容易的.如果 𝐷 ≡0(mod4)D≡0(mod4),那么 𝑥x 是偶数,因而 (𝑥/2,𝑦)(x/2,y) 是方程 𝑢2 −(𝐷/4)𝑣2 = ±1u2−(D/4)v2=±1 的解.其余的情形,必然有 𝑥,𝑦x,y 同时是奇数或者同时是偶数.如果 𝑥,𝑦x,y 同时是奇数,方程两侧对 44 取模就得到 𝐷 ≡1(mod4)D≡1(mod4).所以,如果 𝐷 ≡2,3(mod4)D≡2,3(mod4),那么 𝑥,𝑦x,y 只能同时是偶数,因而 (𝑥/2,𝑦/2)(x/2,y/2) 是方程 𝑢2 −𝐷𝑣2 = ±1u2−Dv2=±1 的解.因此,除了 𝐷 ≡1(mod4)D≡1(mod4) 的情形,方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的解都可以通过相应的(负)Pell 方程的解得到.

现在讨论 𝐷 ≡1(mod4)D≡1(mod4) 的情形,它不能简单地转化为已经解决的情形.为了找到基本解,可以对 (𝑃0,𝑄0,𝐷) =(1,2,𝐷)(P0,Q0,D)=(1,2,D) 应用 PQa 算法,当首次得到 𝑄ℓ =2Qℓ=2 时,就到达了第一个循环节的末尾.如果循环节长度 𝑙l 是偶数,那么 (𝐺ℓ−1,𝐵ℓ−1)(Gℓ−1,Bℓ−1) 就是方程 𝑥2 −𝐷𝑦2 =4x2−Dy2=4 的基本解;否则,(𝐺ℓ−1,𝐵ℓ−1)(Gℓ−1,Bℓ−1) 就是方程 𝑥2 −𝐷𝑦2 = −4x2−Dy2=−4 的基本解.从 (𝐺ℓ−1,𝐵ℓ−1)(Gℓ−1,Bℓ−1) 出发,可以得到方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的所有解:

⎧{ {⎨{ {⎩(𝑥,𝑦):𝑥+𝑦√𝐷2=±(𝐺ℓ−1+𝐵ℓ−1√𝐷2)𝑘,𝑘∈𝐙⎫{ {⎬{ {⎭.{(x,y):x+yD2=±(Gℓ−1+Bℓ−1D2)k,k∈Z}.

如果循环节长度 ℓℓ 是偶数,所有这些都是方程 𝑥2 −𝐷𝑦2 =4x2−Dy2=4 的解;否则,当 𝑘k 是奇数时,(𝑥,𝑦)(x,y) 是方程 𝑥2 −𝐷𝑦2 = −4x2−Dy2=−4 的解,而当 𝑘k 是偶数时,(𝑥,𝑦)(x,y) 是方程 𝑥2 −𝐷𝑦2 =4x2−Dy2=4 的解.

这个算法的正确性依赖于如下事实:

定理

设方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 有正整数解 (𝑥,𝑦)(x,y).如果 𝐷 ≡1(mod4)D≡1(mod4),那么,(𝑥+𝑦)/2𝑦(x+y)/2y 一定是 1+√𝐷21+D2 的渐近分数.

证明

首先注意到,此时 𝑥,𝑦x,y 必然奇偶性相同,所以 (𝑥 +𝑦)/2(x+y)/2 是整数.如果 (𝑥,𝑦)(x,y) 是方程 𝑥2 −𝐷𝑦2 =4x2−Dy2=4 的解,那么 𝑥 >𝑦√𝐷 >2𝑦x>yD>2y,所以,

∣(𝑥+𝑦)/2𝑦−1+√𝐷2∣=2𝑦(𝑥+𝑦√𝐷)<12𝑦2.|(x+y)/2y−1+D2|=2y(x+yD)<12y2.

根据 Legendre 判别法 可知,(𝑥+𝑦)/2𝑦(x+y)/2y 是 1+√𝐷21+D2 的渐近分数.

如果 (𝑥,𝑦)(x,y) 是方程 𝑥2 −𝐷𝑦2 = −4x2−Dy2=−4 的解,那么要建立上述不等式,只需要证明 4𝑦 <𝑥 +𝑦√𝐷4y<x+yD.这至少对于除了 𝐷 =5,13D=5,13 之外的情形都成立.对于 𝐷 =5,13D=5,13 的情形,将 𝑥 =√𝐷𝑦2−4x=Dy2−4 代入该不等式可知,它等价于 2(√𝐷 −2)𝑦2 >12(D−2)y2>1 成立.除了 (𝐷,𝑦) =(5,1)(D,y)=(5,1) 之外,该不等式对于所有 𝐷 =5,13D=5,13 和正整数 𝑦y 都成立.剩下的就是验证 (𝐷,𝑦) =(5,1)(D,y)=(5,1) 的情形,此时,方程 𝑥2 −5𝑦2 = −4x2−5y2=−4 的解是 (𝑥,𝑦) =(1,1)(x,y)=(1,1),需要验证的是 1111 是 1+√52 =[――1]1+52=[1―] 的渐近分数,而这是显然成立的.

定理

设 𝐷D 是正整数但不是完全平方数.二次无理数 𝜔 =1+√𝐷2ω=1+D2 的连分数展开具有形式

𝜔=[⌊𝜔⌋,――――――――――𝑎1,⋯,𝑎ℓ−1,2⌊𝜔⌋−1],ω=[⌊ω⌋,a1,⋯,aℓ−1,2⌊ω⌋−1―],

其中,ℓℓ 为循环节长度,且 𝑎𝑘 =𝑎ℓ−𝑘ak=aℓ−k 对任何 1 <𝑘 <ℓ1<k<ℓ 都成立.

证明

因为 ⌊𝜔⌋ −1 +𝜔 >1⌊ω⌋−1+ω>1,而且它的共轭等于 ⌊𝜔⌋ −𝜔⌊ω⌋−ω,位于 −1−1 和 00 之间,所以根据 Galois 的结论 可知,⌊𝜔⌋ −1 +𝜔⌊ω⌋−1+ω 是纯循环连分数,可以写成

⌊𝜔⌋−1+𝜔=[――――――――――2⌊𝜔⌋−1,𝑎1,⋯,𝑎ℓ−1].⌊ω⌋−1+ω=[2⌊ω⌋−1,a1,⋯,aℓ−1―].

而 Galois 关于倒数负共轭的结论说明

1𝜔−⌊𝜔⌋=[――――――――――𝑎ℓ−1,⋯,𝑎1,2⌊𝜔⌋−1].1ω−⌊ω⌋=[aℓ−1,⋯,a1,2⌊ω⌋−1―].

因此,根据连分数的定义,有

⌊𝜔⌋−1+𝜔=2⌊𝜔⌋−1+11𝜔−⌊𝜔⌋=[2⌊𝜔⌋−1,――――――――――𝑎ℓ−1,⋯,𝑎1,2⌊𝜔⌋−1].⌊ω⌋−1+ω=2⌊ω⌋−1+11ω−⌊ω⌋=[2⌊ω⌋−1,aℓ−1,⋯,a1,2⌊ω⌋−1―].

连分数展开的唯一性就说明 𝑎𝑘 =𝑎ℓ−𝑘ak=aℓ−k 对所有 1 <𝑘 <ℓ1<k<ℓ 都成立,因而要证明的展开式也成立.

定理

设 𝐷 ≡1(mod4)D≡1(mod4).在对 (𝑃0,𝑄0,𝐷) =(1,2,𝐷)(P0,Q0,D)=(1,2,D) 运行上述 PQa 算法的过程中,𝑄𝑘 =2Qk=2 必然推出 ℓ ∣𝑘ℓ∣k

证明

在 1+√𝐷21+D2 的连分数展开中,除了第 00 个余项,所有其他余项都是 纯循环连分数.设 𝑄𝑘 =2Qk=2.根据 Galois 的结论,必然有余项 𝜔𝑘 =𝑃𝑘+√𝐷2ωk=Pk+D2 的共轭 −1 <𝑃𝑘−√𝐷2 <0−1<Pk−D2<0,亦即 √𝐷 −2 <𝑃𝑘 <√𝐷D−2<Pk<D.因为 PQa 算法中总有 𝑄𝑘 ∣𝑃2𝑘 −𝐷Qk∣Pk2−D(见 算法正确性证明),所以 𝑃𝑘Pk 一定是奇数,这就说明 𝑃𝑘Pk 取值唯一,即 𝑃𝑘 =𝑃0 +2(⌊𝜔⌋ −1)Pk=P0+2(⌊ω⌋−1),也就是说余项 𝜔𝑘 =𝜔ℓωk=ωℓ.但是,余项的重复意味着连分数的循环,如果 𝑘k 不是 ℓℓ 的整数倍,就与 ℓℓ 是最小正周期相矛盾.所以,必然有 ℓ ∣𝑘ℓ∣k

定理

设方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的最小正整数解为 (𝑥1,𝑦1)(x1,y1).那么,它的全部解就是

⎧{ {⎨{ {⎩(𝑥,𝑦):𝑥+𝑦√𝐷2=±(𝑥1+𝑦1√𝐷2)𝑘,𝑘∈𝐙⎫{ {⎬{ {⎭.{(x,y):x+yD2=±(x1+y1D2)k,k∈Z}.证明

根据对称性,只需要考虑正整数解 (𝑥,𝑦)(x,y) 即可.此处需要证明的只有集合中的实数对 (𝑥,𝑦)(x,y) 确实是方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的整数解.剩下的事情只需要复述对方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的解的结构的证明即可.

实际上要证明的是,对于方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的任何整数解 (𝑥1,𝑦1)(x1,y1) 和 (𝑥2,𝑦2)(x2,y2),如下定义的正实数对 (𝑥3,𝑦3)(x3,y3) 仍然是整数解:

𝑥3+𝑦3√𝐷2=𝑥1+𝑦1√𝐷2𝑥2+𝑦2√𝐷2.x3+y3D2=x1+y1D2x2+y2D2.

展开右侧,比较有理项和无理项的系数可知

𝑥3=𝑥1𝑥2+𝐷𝑦1𝑦22, 𝑦3=𝑥1𝑦2+𝑥2𝑦12.x3=x1x2+Dy1y22, y3=x1y2+x2y12.

因为对 𝑖 =1,2i=1,2 有 𝑥𝑖 ≡𝑥2𝑖 ≡𝐷𝑦2𝑖 ≡𝐷𝑦𝑖(mod2)xi≡xi2≡Dyi2≡Dyi(mod2),所以

2𝑥3=𝑥1𝑥2+𝐷𝑦1𝑦2≡𝐷2𝑦1𝑦2+𝐷𝑦1𝑦2=𝐷(𝐷+1)𝑦1𝑦2≡0(mod2),2𝑦3=𝑥1𝑦2+𝑥2𝑦1≡𝐷𝑦1𝑦2+𝐷𝑦2𝑦1=2𝐷𝑦1𝑦2≡0(mod2).2x3=x1x2+Dy1y2≡D2y1y2+Dy1y2=D(D+1)y1y2≡0(mod2),2y3=x1y2+x2y1≡Dy1y2+Dy2y1=2Dy1y2≡0(mod2).

这说明 𝑥3x3 和 𝑦3y3 都是整数.再利用范数保持乘法的性质可知,(𝑥3,𝑦3)(x3,y3) 是 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的解.

综合这些事实,重复前文几节的论述,就可以说明用于解决方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的上述算法的正确性.这些结果说明,方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 具有和方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 类似的简单的解的结构:它的所有解都可以通过其最小正整数解表示出来,而无需求解其它方程.

其实,方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的所有解都可以在方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的解中找到,因而从这个角度看,方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 更为基础.显然,(𝑥,𝑦)(x,y) 是方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的解,当且仅当 (2𝑥,2𝑦)(2x,2y) 是方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的解.前文的分析指出,当 𝐷 ≡2,3(mod4)D≡2,3(mod4) 时,方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的所有解都一定同为偶数,因而对应于 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的解.

当 𝐷 ≡0(mod4)D≡0(mod4) 时,方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的解 (𝑥,𝑦)(x,y) 中,𝑥x 一定是偶数,但是 𝑦y 可能是奇数.如果在方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的最小正整数解 (𝑥1,𝑦1)(x1,y1) 中,𝑦1y1 是偶数,那么在所有解中 𝑦y 也一定是偶数,此时这些整数解和方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的整数解一一对应;但是,如果在最小整数解 (𝑥1,𝑦1)(x1,y1) 中,𝑦1y1 是奇数,那么 𝑦𝑘yk 的奇偶性将和 𝑘k 一致,交替变化,因而只有当 𝑘k 是偶数时,才对应于方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的解.如果 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的最小正整数解中 𝑦1y1 是奇数而且 𝑥1 +𝑦1√𝐷x1+y1D 的范数是 −4−4,那么,对于这样的 𝐷D,𝑥2 −𝐷𝑦2 = −4x2−Dy2=−4 有解,但是 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 无解.

当 𝐷 ≡1(mod4)D≡1(mod4) 时,方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的解 (𝑥,𝑦)(x,y) 可能同时是奇数,也可能同时是偶数.如果最小正整数解 (𝑥1,𝑦1)(x1,y1) 已经同时是偶数,那么它的所有整数解也一定同时是偶数,所以总是对应于方程 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的整数解.如果最小正整数解 (𝑥1,𝑦1)(x1,y1) 同时是奇数,那么有如下结论:

定理

设方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的最小正整数解是 (𝑥1,𝑦1)(x1,y1).如果 𝑥1x1 和 𝑦1y1 同时是奇数,那么,𝐷 ≡5(mod8)D≡5(mod8),且该方程的整数解 (𝑥,𝑦)(x,y) 同时是偶数,当且仅当

𝑥+𝑦√𝐷2=±(𝑥1+𝑦1√𝐷2)3𝑘,𝑘∈𝐙.x+yD2=±(x1+y1D2)3k,k∈Z.证明

等式 𝑥21 −𝐷𝑦21 = ±4x12−Dy12=±4 的两边同时对 88 取模,得到 𝐷 ≡5(mod8)D≡5(mod8).要证明第二个结论,首先证明 (𝑥3,𝑦3)(x3,y3) 都是偶数,因为

𝑥3+𝑦3√𝐷2=(𝑥1+𝑦1√𝐷2)3=𝑥31+3𝐷𝑥𝑦218+3𝑥21𝑦1+𝐷𝑦318√𝐷,x3+y3D2=(x1+y1D2)3=x13+3Dxy128+3x12y1+Dy138D,

所以,只需要证明右侧是整数.因为奇数的平方模 88 余 11,所以,有

𝑥31+3𝐷𝑥𝑦1=𝑥1(𝑥21+3𝐷𝑦1)≡𝑥1(1+3×5×1)=16𝑥1=0(mod8),3𝑥21𝑦1+𝐷𝑦31=𝑦1(3𝑥21+𝐷𝑦21)≡𝑦1(3×1+5×1)=8𝑦1=0(mod8).x13+3Dxy1=x1(x12+3Dy1)≡x1(1+3×5×1)=16x1=0(mod8),3x12y1+Dy13=y1(3x12+Dy12)≡y1(3×1+5×1)=8y1=0(mod8).

这就说明了 𝑥3,𝑦3x3,y3 都是偶数.进而,对于所有 𝑘 ∈𝐙k∈Z,都有

𝑥+𝑦√𝐷2=±(𝑥1+𝑦1√𝐷2)3𝑘=±(𝑥3+𝑦3√𝐷2)𝑘∈𝐙,x+yD2=±(x1+y1D2)3k=±(x3+y3D2)k∈Z,

所以此时的 (𝑥,𝑦)(x,y) 都是偶数.反过来,对于 𝑟 =1,2r=1,2,总有

±(𝑥1+𝑦1√𝐷2)3𝑘+𝑟=±(𝑥3+𝑦3√𝐷2)𝑘(𝑥𝑟+𝑦𝑟√𝐷2).±(x1+y1D2)3k+r=±(x3+y3D2)k(xr+yrD2).

要证明相应的 (𝑥,𝑦)(x,y) 不是整数,只需要证明该式不是整数,也就是右侧的乘积中第二项不是整数.这在 𝑟 =1r=1 时,就是已知条件;在 𝑟 =2r=2 时,因为

𝑥2+𝑦2√𝐷2=(𝑥1+𝑦1√𝐷2)2=𝑥21+𝐷𝑦214+𝑥1𝑦12√𝐷,x2+y2D2=(x1+y1D2)2=x12+Dy124+x1y12D,

而且 𝑥21 +𝐷𝑦21 ≡1 +1 ×1 =2(mod4)x12+Dy12≡1+1×1=2(mod4),𝑥1𝑦1 ≡1(mod2)x1y1≡1(mod2),所以该式也不是整数.这就证明了,只有幂次是 33 的倍数的时候,相应的解才都属偶数.

也就是说,方程 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的每三个解中就有一个同时是偶数,它对应着 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的整数解.这也说明,对于 𝐷 ≡1(mod4)D≡1(mod4),方程 𝑥2 −𝐷𝑦2 = −4x2−Dy2=−4 有解,当且仅当方程 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 有解.

到目前为止的讨论,已经足够计算实二次整数环的基本单位数.设 𝐷D 是正整数且不含平方因子.对于 𝐷 ≡2,3(mod4)D≡2,3(mod4) 的情形,只需要求出 𝑥2 −𝐷𝑦2 = ±1x2−Dy2=±1 的最小正整数解;而对于 𝐷 ≡1(mod4)D≡1(mod4) 的情形,只需要求出 𝑥2 −𝐷𝑦2 = ±4x2−Dy2=±4 的最小正整数解.当得到最小正整数解 (𝑥,𝑦)(x,y) 时,对于 𝐷 ≡2,3(mod4)D≡2,3(mod4),基本单位数就是 ±𝑥 ±𝑦√𝐷±x±yD;对于 𝐷 ≡1(mod4)D≡1(mod4),基本单位数就是 ±𝑥±𝑦√𝐷2±x±yD2

示例

  1. 求解方程 𝑥2 −14𝑦2 = ±4x2−14y2=±4

利用前文的示例中的计算可知,方程 𝑥2 −14𝑦2 =4x2−14y2=4 的最小正整数解为 (30,8)(30,8),方程 𝑥2 −14𝑦2 = −4x2−14y2=−4 无解.

  1. 求解方程 𝑥2 −41𝑦2 = ±4x2−41y2=±4

对 (𝑃0,𝑄0,𝐷) =(1,2,41)(P0,Q0,D)=(1,2,41) 运行 PQa 算法结果如下:(标红部分为第一个循环节)

𝑘k𝑃P𝑄Q𝑎a𝐴A𝐵B𝐺G𝐺2 −𝐷𝐵2G2−DB2
00112233331155−16−16
1155881144117788
223344221111331919−8−8
3355442226267745451616
44338811373710106464−4−4
5555225521121157573653651616
665588112482486767429429−8−8
773344227077071911911223122388
885544221662166244944928752875−16−16
99338811236923696406404098409844
10105522551350713507364936492336523365−16−16
1111558811158761587642894289274632746388

循环节长度 ℓ =5ℓ=5 为奇数.方程 𝑥2 −41𝑦2 = −4x2−41y2=−4 的最小正整数解为 (𝐺4,𝐵4) =(64,10)(G4,B4)=(64,10),方程 𝑥2 −41𝑦2 =4x2−41y2=4 的最小正整数解为 (𝐺9,𝐵9) =(4098,640)(G9,B9)=(4098,640).它们之间有如下关系:

4098+640√412=(64+10√412)2.4098+640412=(64+10412)2.

当然,因为 𝐷 ≡1(mod8)D≡1(mod8),根据前文结论,此时方程 𝑥2 −41𝑦2 = ±4x2−41y2=±4 的最小正整数解一定都是偶数,且总是方程 𝑥2 −41𝑦2 = ±1x2−41y2=±1 的最小正整数解的 22 倍,所以也可以直接利用前文的示例得出.

  1. 求解方程 𝑥2 −13𝑦2 = ±4x2−13y2=±4

对 (𝑃0,𝑄0,𝐷) =(1,2,13)(P0,Q0,D)=(1,2,13) 运行 PQa 算法结果如下:(标红部分为第一个循环节)

𝑘k𝑃P𝑄Q𝑎a𝐴A𝐵B𝐺G𝐺2 −𝐷𝐵2G2−DB2
00112222221133−4−4
113322337733111144
22332233232310103636−4−4
333322337474333311911944

循环节长度 ℓ =1ℓ=1 为奇数.方程 𝑥2 −13𝑦2 = −4x2−13y2=−4 的最小正整数解为 (𝐺0,𝐵0) =(3,1)(G0,B0)=(3,1),方程 𝑥2 −13𝑦2 =4x2−13y2=4 的最小正整数解为 (𝐺1,𝐵1) =(11,3)(G1,B1)=(11,3)

因为该方程的最小正整数解都是奇数,所以可以利用第三个循环节末尾处的数对 (𝐺2,𝐵2) =(36,10)(G2,B2)=(36,10) 得到相应的(负)Pell 方程 𝑥2 −13𝑦2 = ±1x2−13y2=±1 的最小正整数解 (18,5)(18,5).它也可以通过直接计算得到:

36+10√132=(3+√132)3.36+10132=(3+132)3.

而且,这是负 Pell 方程的解.相应的 Pell 方程的最小正整数解是 (649,180)(649,180)

  1. 求解方程 𝑥2 −52𝑦2 = ±4x2−52y2=±4

因为方程 𝑥2 −13𝑦2 = ±1x2−13y2=±1 的最小正整数解分别是 (18,5)(18,5) 和 (649,180)(649,180),所以方程 𝑥2 −52𝑦2 = ±4x2−52y2=±4 的最小正整数解分别是 (36,10)(36,10) 和 (1298,360)(1298,360)

一般情形

最后,讨论广义 Pell 方程的解法.

对于 |𝑁| <√𝐷|N|<D 的情形有一个简单的解法.前文的结论说明方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的解 (𝑥,𝑦)(x,y) 一定满足 𝑥𝑦xy 等于 √𝐷D 的某个渐近分数.而且,根据前文讨论的解的结构可知,每个基础解 (𝑥,𝑦)(x,y) 都满足 𝑥 +𝑦√𝐷x+yD 小于等于相应的 Pell 方程 𝑥2 −𝐷𝑦2 =1x2−Dy2=1 的基础解 𝑥1 +𝑦1√𝐷x1+y1D.利用 PQa 算法中分母序列 𝐵𝑘Bk 的单调性可知,广义 Pell 方程的这些基础解一定出现在相应的 Pell 方程的基础解出现之前.由此,只需要对 (𝑃0,𝑄0,𝐷) =(0,1,𝐷)(P0,Q0,D)=(0,1,D) 运行 PQa 算法,直到 𝑄ℓ′ =1Qℓ′=1 且 ℓ′ℓ′ 为偶数时为止,过程中对出现的每个 (𝐴𝑘,𝐵𝑘)(Ak,Bk) 检验是否存在整数 𝑓f 使得

𝐴2𝑘−𝐷𝐵2𝑘=(−1)𝑘+1𝑄𝑘+1=𝑁/𝑓2Ak2−DBk2=(−1)k+1Qk+1=N/f2

成立,如果成立,则记录 (𝑓𝐴𝑘,𝑓𝐵𝑘)(fAk,fBk) 是一个最小正整数解.这个过程记录的所有 (𝑓𝐴𝑘,𝑓𝐵𝑘)(fAk,fBk) 就是方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的全部最小正整数解.利用 (𝐴ℓ′−1,𝐵ℓ′−1)(Aℓ′−1,Bℓ′−1),即相应的 Pell 方程的基本解,就可以根据求出的这些最小正整数解,生成广义 Pell 方程的所有解.注意,取决于循环节长度 ℓℓ 是偶数还是奇数,上述的 ℓ′ℓ′ 可能是 ℓℓ 或是 2ℓ2ℓ

对于更为一般的 𝑁N 的情形,上述方法不再适用.首先,枚举 𝑁N 的所有平方因子 𝑓2f2,设 𝑚 =𝑁/𝑓2m=N/f2,并枚举同余方程 𝑧2 ≡𝐷(mod|𝑚|)z2≡D(mod|m|) 的所有满足 −|𝑚|/2 <𝑧 ≤|𝑚|/2−|m|/2<z≤|m|/2 的解 𝑧z.然后,对 (𝑃0,𝑄0,𝐷) =(𝑧,|𝑚|,𝐷)(P0,Q0,D)=(z,|m|,D) 运行 PQa 算法,直到 𝑄𝑘 = ±1Qk=±1 或已经结束了一个循环节.在第二种情形,那么与该组 (𝑓,𝑧)(f,z) 相关的方程的解并不存在.在第一种情形,需要进一步判断 ( −1)𝑘𝑄𝑘 =𝑁/|𝑁|(−1)kQk=N/|N| 与否.如果符号一致,那么 (𝑓𝐺𝑘−1,𝑓𝐵𝑘−1)(fGk−1,fBk−1) 就是方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的解.否则,它是方程 𝑥2 −𝐷𝑦2 = −𝑁x2−Dy2=−N 的解,而且当且仅当相应的负 Pell 方程的解存在时,才可以通过复合它与相应的负 Pell 方程的基本解来得到方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 的解.当完成对所有组 (𝑓,𝑧)(f,z) 的遍历之后,就可以得到方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 在每个解的等价类中各恰好一个解,且该解为该等价类中的基本解或最小正整数解.利用它们和相应的 Pell 方程的基本解,可以生成该方程的所有整数解.这一算法称为 Lagrange–Matthews–Mollin 算法

该算法的正确性由如下定理保证:

定理

设方程 𝑥2 −𝐷𝑦2 =𝑁x2−Dy2=N 有整数解 (𝑥,𝑦)(x,y) 且 𝑥 ≥0,𝑦 >0,gcd(𝑥,𝑦) =1x≥0,y>0,gcd(x,y)=1.令 𝑄0 =|𝑁|Q0=|N|,则 gcd(𝑄0,𝑦) =1gcd(Q0,y)=1.设 𝑃0P0 是同余方程 𝑥 ≡ −𝑃0𝑦(mod𝑄0)x≡−P0y(modQ0) 的解且 −𝑄0/2 <𝑃0 ≤𝑄0/2−Q0/2<P0≤Q0/2,并设整数 𝑋X 使得 𝑥 =𝑄0𝑋 −𝑃0𝑦x=Q0X−P0y 成立.那么,𝑃20 ≡𝐷(mod𝑄0)P02≡D(modQ0),𝑋𝑦Xy 是 𝜔 =𝑃0+√𝐷𝑄0ω=P0+DQ0 的一个渐近分数 𝐴𝑘−1𝐵𝑘−1Ak−1Bk−1,且 𝑄𝑘 =( −1)𝑘𝑁|𝑁|Qk=(−1)kN|N|

证明

利用 𝑥 ≡ −𝑃0𝑦(mod𝑄0)x≡−P0y(modQ0) 和 𝑥2 −𝐷𝑦2 =𝑁 ≡0(mod𝑄0)x2−Dy2=N≡0(modQ0),显然有 𝑃20 ≡𝐷(mod𝑄0)P02≡D(modQ0).因而,

𝑃0𝑥+𝐷𝑦≡−𝑃20𝑦+𝐷𝑦=(𝐷−𝑃20)𝑦≡0(mod𝑄0).P0x+Dy≡−P02y+Dy=(D−P02)y≡0(modQ0).

由此,可以考察整系数矩阵

(𝑃𝑅𝑄𝑆)=⎛⎜ ⎜ ⎜⎝𝑋𝑃0𝑥+𝐷𝑦𝑄0𝑦𝑥⎞⎟ ⎟ ⎟⎠.(PRQS)=(XP0x+DyQ0yx).

它的行列式

𝑃𝑆−𝑄𝑅=𝑥(𝑥+𝑃0𝑦)−𝑦(𝑃0𝑥+𝐷𝑦)𝑄0=𝑥2−𝐷𝑦2𝑄0=±1.PS−QR=x(x+P0y)−y(P0x+Dy)Q0=x2−Dy2Q0=±1.

而且,设 𝜁 =√𝐷 >1ζ=D>1,就有

𝑃𝜁+𝑅𝑄𝜁+𝑆=(𝑥+𝑃0𝑦)√𝐷+(𝑃0𝑥+𝐷𝑦)(𝑥+𝑦√𝐷)𝑄0=𝑃0+√𝐷𝑄0=𝜔.Pζ+RQζ+S=(x+P0y)D+(P0x+Dy)(x+yD)Q0=P0+DQ0=ω.

下面要证明 𝑃𝑄PQ 是 𝜔ω 的一个渐近分数.不妨设 𝑃𝑄PQ连分数展开

𝑃𝑄=[𝑎0,𝑎1,⋯,𝑎𝑘]PQ=[a0,a1,⋯,ak]

且 𝑃𝑆 −𝑄𝑅 =( −1)𝑘−1PS−QR=(−1)k−1.如果设 𝑝𝑘𝑞𝑘pkqk 是它的第 𝑘k 个渐近分数,那么 (𝑝𝑘,𝑞𝑘) =(𝑃,𝑄)(pk,qk)=(P,Q),且根据 渐近分数的差分公式 可知,𝑝𝑘𝑞𝑘−1 −𝑞𝑘𝑝𝑘−1 =( −1)𝑘−1pkqk−1−qkpk−1=(−1)k−1.这说明

𝑝𝑘(𝑆−𝑞𝑘−1)=𝑞𝑘(𝑅−𝑝𝑘−1).pk(S−qk−1)=qk(R−pk−1).

分情况讨论:

  • 如果 𝑆 =0S=0,那么容易验证 𝑄 =𝑅 =1Q=R=1,因而 𝜔 =𝑃 +𝜁−1 =[𝑃,𝜁]ω=P+ζ−1=[P,ζ],故而 𝑃𝑄 =𝑃PQ=P 是 𝜔ω 的第 00 个渐近分数;
  • 如果 𝑄 =𝑆 >0Q=S>0,那么 𝑄 =𝑆 =1Q=S=1 且 𝑃 −𝑅 = ±1P−R=±1.此时,
  • 如果 𝑃 =𝑅 +1P=R+1,那么 𝜔 =𝑅 +11+𝜁−1 =[𝑅,1,𝜁]ω=R+11+ζ−1=[R,1,ζ],故而 𝑃𝑄 =𝑅+11 =[𝑅,1]PQ=R+11=[R,1] 是 𝜔ω 的第 11 个渐近分数;
  • 如果 𝑃 =𝑅 −1P=R−1,那么 𝜔 =𝑅 −1 +11+𝜁 =[𝑅 −1,𝜁 −1]ω=R−1+11+ζ=[R−1,ζ−1],故而 𝑃𝑄 =𝑅 −1PQ=R−1 是 𝜔ω 的第 00 个渐近分数;
  • 如果 𝑄 ≠𝑆 >0Q≠S>0,那么由于 𝑄 =𝑞𝑘 ∣(𝑆 −𝑞𝑘−1)Q=qk∣(S−qk−1),总存在整数 𝜅κ 使得 𝑆 =𝜅𝑞𝑘 +𝑞𝑘−1S=κqk+qk−1 和 𝑅 =𝜅𝑝𝑘 +𝑝𝑘−1R=κpk+pk−1 成立.因为 𝑞𝑘 ≥𝑞𝑘−1qk≥qk−1 且 𝑆 >0S>0,所以 𝜅 ≥0κ≥0.因而,𝜔 =(𝜅+𝜁)𝑝𝑘+𝑝𝑘−1(𝜅+𝜁)𝑞𝑘+𝑞𝑘−1 =[𝑎0,𝑎1,⋯,𝑎𝑘,𝜅 +𝜁]ω=(κ+ζ)pk+pk−1(κ+ζ)qk+qk−1=[a0,a1,⋯,ak,κ+ζ],故而 𝑃𝑄PQ 是它的第 𝑘k 个渐近分数.

综上所述,总有 𝑋𝑦Xy 是 𝜔 =𝑃0+√𝐷𝑄0ω=P0+DQ0 的渐近分数,并按照 PQa 算法中的记号记作 𝐴𝑘−1𝐵𝑘−1Ak−1Bk−1.因为 𝐴2𝑘−1 −𝐷𝐵2𝑘−1 =( −1)𝑘𝑄0𝑄𝑘Ak−12−DBk−12=(−1)kQ0Qk,所以 𝑄𝑘 =( −1)𝑘𝑁|𝑁|Qk=(−1)kN|N|

该定理保证了方程的所有正解都存在于相应的二次无理数的渐近分数中.因为利用 PQa 算法计算渐近分数时,只要进入循环节,就一定能保证渐近分数总是正的.所以,只要枚举所有定理条件所允许的二次无理数,计算它的渐近分数直到一个循环节内,就能够找到一个解.因为在同一个二次无理数的渐近分数中出现的两个解,一定是等价的,所以只要得到第一个满足 ( −1)𝑘𝑄𝑘 =𝑁/|𝑁|(−1)kQk=N/|N| 的解,就可以停止继续后面的计算.与前面的所有算法都不同的是,此处满足条件的 𝑘k 可能出现在尚未进入循环节时.

示例

  1. 求解方程 𝑥2 −157𝑦2 =12x2−157y2=12

因为 122 <157122<157,所以对 (𝑃0,𝑄0,𝐷) =(0,1,157)(P0,Q0,D)=(0,1,157) 运行 PQa 算法结果如下:(标红部分为第一个循环节)

𝑘k𝑃P𝑄Q𝑎a𝐴A𝐵B𝐺G𝐺2 −𝐷𝐵2G2−DB2
00001112121212111212−13−13
11121213131113131113131212
22111212112525222525−3−3
331111337718818815151881881919
4410101919112132131717213213−4−4
55994455125312531001001253125399
66111199222719271921721727192719−12−12
777712121139723972317317397239721111
88551111116691669153453466916691−11−11
9966111111106631066385185110663106631212
1010551212111735417354138513851735417354−9−9
1111779922453714537136213621453714537144
1212111144552442092442091949019490244209244209−19−19
131399191911289580289580231112311128958028958033
1414101033772271269227126918126718126722712692271269−12−12
1515111112121125608492560849204378204378256084925608491313
1616111313114832118483211838564538564548321184832118−1−1
17171212112424118531681118531681945985894598581185316811185316811313
1818121213131112336379912336379998455039845503123363799123363799−12−12
191911121211241895480241895480193053611930536124189548024189548033
2020111133771816632159181663215914498303014498303018166321591816632159−19−19
21211010191911205852763920585276391642883911642883912058527639205852763944
222299445512109270354121092703549664249859664249851210927035412109270354−9−9
23231111992226277068347262770683472097138361209713836126277068347262770683471212
2424771212113838633870138386338701306356334630635633463838633870138386338701−11−11
25255511111164663407048646634070485160701707516070170764663407048646634070481111
26266611111110304974574910304974574982242650538224265053103049745749103049745749−12−12
272755121211167713152797167713152797133849667601338496676016771315279716771315279799
28287799224384760513434384760513433499419857334994198573438476051343438476051343−4−4
29291111445523600934095122360093409512188355959625188355959625236009340951223600934095121919
3030991919112798569460855279856946085522335015819822335015819827985694608552798569460855−3−3
31311010337721950079635497219500796354971751807067011175180706701121950079635497219500796354971212
323211111212112474864909635224748649096352197515722520919751572252092474864909635224748649096352−13−13
333311131311466987287318494669872873184937269642922203726964292220466987287318494669872873184911
3434121211242411455181386607281145518138660728914223002384899142230023848911455181386607281145518138660728−13−13
35351212131311119221686739257711922168673925779514926453070995149264530709119221686739257711922168673925771212

循环节长度 ℓ =17ℓ=17 为奇数,所以需要考察两个循环节内 𝐺2𝑘−1 −157𝐵2𝑘−1Gk−12−157Bk−12 与 1212 相差一个平方因子的情形,即 𝑘 =1,9,13,19,23,31k=1,9,13,19,23,31 的情形.它们对应的解就是下表中的 (𝑓𝐺,𝑓𝐵)(fG,fB)

𝑘k𝑓f𝑓𝐺𝑘−1fGk−1𝑓𝐵𝑘−1fBk−1𝑥x𝑦y
1111131311131311
991110663106638518511066310663851851
13132257916057916046222462225791605791604622246222
1919224837909604837909603861072238610722−579160−5791604622246222
232311262770683472627706834720971383612097138361−10663−10663851851
313111219500796354972195007963549717518070670111751807067011−13−1311

全体 (𝑓𝐺,𝑓𝐵)(fG,fB) 就是方程 𝑥2 −157𝑦2 =12x2−157y2=12 的解集的所有等价类中的最小正整数解.要通过这些解得到全部解,可以利用相应的 Pell 方程的基本解 (46698728731849,3726964292220)(46698728731849,3726964292220).比如说,可以将它们转化为该等价类中的基本解 (𝑥,𝑦)(x,y),相应的解也一并列于上表中.

  1. 求解方程 𝑥2 −157𝑦2 =12x2−157y2=12

这次利用 Lagrange–Matthews–Mollin 算法求解.首先,枚举 𝑁 =12N=12 的平方因子:

  • 𝑓2 =12f2=12 时,有 𝑚 =12m=12,同余方程 𝑃2 ≡157(mod12)P2≡157(mod12) 有解 𝑧 = ±1, ±5z=±1,±5
  • 𝑓2 =22f2=22 时,有 𝑚 =3m=3,同余方程 𝑃2 ≡157(mod3)P2≡157(mod3) 有解 𝑧 = ±1z=±1

对于所有可能的 (𝑓,𝑧)(f,z) 组合运行初始参数为 (𝑃0,𝑄0,𝐷) =(𝑧,|𝑚|,𝐷)(P0,Q0,D)=(z,|m|,D) 的 PQa 算法,并找到首个 ( −1)𝑘𝑄𝑘 =1(−1)kQk=1 的位置,对应的 (𝑓𝐺𝑘−1,𝑓𝐵𝑘−1)(fGk−1,fBk−1) 就是一组解.结果如下表所示:

𝑓f𝑧z𝑚m𝑘k𝑓𝐺𝑘−1fGk−1𝑓𝐵𝑘−1fBk−1
111112123232219500796354972195007963549717518070670111751807067011
11−1−1121222131311
115512122424262770683472627706834720971383612097138361
11−5−5121210101066310663851851
22113320204837909604837909603861072238610722
22−1−13314145791605791604622246222

这就是前文列举的所有等价类中的最小正整数解,可以利用 Pell 方程的基本解将它们转化为基本解.

  1. 求解方程 𝑥2 −79𝑦2 = ±101x2−79y2=±101

仍然使用 Lagrange–Matthews–Mollin 算法求解.因为 𝑁 =101N=101 是素数,所以一定有 𝑓 =1f=1.此时,𝑚 =101m=101,相应的同余方程 𝑃2 ≡79(mod101)P2≡79(mod101) 有解 𝑃 = ±33P=±33

对 (𝑃0,𝑄0,𝐷) =(33,101,79)(P0,Q0,D)=(33,101,79) 运行 PQa 算法结果如下:(标红部分为第一个循环节)

𝑘k𝑃P𝑄Q𝑎a𝐴A𝐵B𝐺G𝐺2 −𝐷𝐵2G2−DB2
003333101101000011−33−3310101010
11−33−33−10−102211223535909909
221313992222553737−606−606
33556622551212109109505505
4477553317174141364364−303−303
5588335590902172171929192910101010
667710101110710725825822932293−707−707
7733771119719747547542224222909909
8844991130430473373365156515−606−606
99556622805805194119411725217252505505

循环节长度 ℓ =6ℓ=6 为偶数.直到一个循环节结束,都不存在 𝑄𝑘 = ±1Qk=±1,因而,该情形无解.相应地,对于 (𝑃0,𝑄0,𝐷) =( −33,101,79)(P0,Q0,D)=(−33,101,79) 运行 PQa 算法也可以观察到类似的情况.因此,该方程无解.

习题

参考文献与注释

  1. 当 𝐷D 是完全平方数时,直接做因式分解可知,(𝑥 +𝑦√𝐷)(𝑥 −𝑦√𝐷) =𝑁(x+yD)(x−yD)=N,因此所有解可以通过遍历 𝑁N 的因数得知.特别地,当 𝑁 =1N=1 时,方程只有解 ( ±1,0)(±1,0);当 𝑁 = −1N=−1 且 𝐷 ≠1D≠1 时,方程没有解. ↩
  1. 有些中文文献也称它为第二型 Pell 方程. ↩
  1. 即形如 𝑛 +12n+12 且 𝑛 ∈𝐙n∈Z 的有理数. ↩
  1. 注意,Pell 方程中基本解的定义与实二次整数环中的基本单位数的定义并不一致.首先,部分实二次整数环中的基本单位数 𝑥 +𝑦√𝐷x+yD 中的 𝑥,𝑦x,y 是半整数,因而并非 Pell 方程的解.其次,同一个实二次整数环的基本单位数有四个,但是基本解只有一个,因为基本解要求 𝑥,𝑦x,y 都是正数. ↩
  1. 一个较为实用的判断方法和工具在 这里 及其参考文献.使得方程 𝑥2 −𝐷𝑦2 = −1x2−Dy2=−1 有解的正整数 𝐷D 的列表是 OEIS A031396. ↩
本页面最近更新: 2026/1/7 08:56:54,更新历史 发现错误?想一起完善?在 GitHub 上编辑此页! 本页面贡献者:Great-designer, c-forrest, Tiphereth-A, Enter-tainer, StudyingFather, Menci, NachtgeistW, Xeonacid 本页面的全部内容在CC BY-SA 4.0SATA 协议之条款下提供,附加条款亦可能应用