芝士:佩尔方程
Posted loney-s
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了芝士:佩尔方程相关的知识,希望对你有一定的参考价值。
背景
对于一个(x^2-dy^2=1)的方程进行求解
这里的解为整数
其中(d)已知
解法
若d为完全平方数
(x^2-(sqrt dy)^2=1)
((x+sqrt dy)(x-sqrt d y)=1)
因为我们要求的解为正整数,并且(d)也为正整数
所以((x+sqrt d y))和((x-sqrt dy))都为整数
(egin{cases}x+sqrt dy=1\x-sqrt dy=1end{cases})
或者
(egin{cases}x+sqrt dy=-1\x-sqrt dy=-1end{cases})
其中两个方程的解法一样,这里只对其中一种进行讨论
对于答案为(1)
将两个式子加起来,可以得到
(egin{cases}x=1\y=0end{cases})
或者
(egin{cases}x=-1\y=0end{cases})
若d不为完全平方数
引理
(egin{cases}x_1^2-dy_1^2=1\x_2^2-dy_2^2=1end{cases})
((x_1^2-dy_1^2)(x_2^2-dy_2^2)=1)
(x_1^2x_2^2-dx_2^2y_1^2-dx_1^2y_2^2+d^2y_1^2y_2^2=1)
(((x_1x_2)^2+(dy_1y_2)^2)-d((x_1y_2)^2+(x_2y_1)^2)=1)
(((x_1x_2)^2+2dx_1x_2y_1y_2+(dy_1y_2)^2)-d((x_1y_2)^2+2x_1x_2y_1y_2+(x_2y_1)^2)=1)
((x_1x_2+dy_1y_2)^2-d(x_1y_2+x_2y_1)^2=1)
所以((x_1x_2+dy_1y_2,x_1y_2+x_2y_1))也为佩尔方程的一组解
注意这个式子对于(x_1==x_2,y_1==y_2)的时候一样成立
递推
这里讨论的解均为正整数
假设我们已经知道最小的一组解((x_1,y_1),(x_1ge0,y_1ge0))
(y_1=sqrt{frac{x_1^2-1}{d}})
很明显,对于(x_1)最小的时候,(y_1)也是最小的
考虑上面解的形式$(x_1x_2+dy_1y_2,x_1y_2+x_2y_1) $
我们假设((x_i,y_i))为佩尔方程的第(i)小解
即((x_1x_i+dy_1y_i,x_1y_i+x_iy_1))
首先对于((x_i,y_i),d)是固定的
也就用上面的引理推出来的解的大小与(x_1,y_1)相关
注意到我们讨论的解为正整数
推出来的解一定是随着(x_1,y_1)的增大而增大的
所以(egin{cases}x_{i+1}=x_1x_i+dy_1y_i\y_{i+1}=x_1y_i+x_iy_1end{cases})
很明显这个递推式是可以用矩阵快速幂优化的
(egin{bmatrix}x_{i+1}\y_{i+1}end{bmatrix}=egin{bmatrix}x_1\y_1end{bmatrix}egin{bmatrix}x_1,dy_1\y_1,x_1end{bmatrix}^i)
最小解
根据实验证明,大多数题目的最小解都很小
所以直接暴力!!!
代码
咕咕咕
以上是关于芝士:佩尔方程的主要内容,如果未能解决你的问题,请参考以下文章