给定n,求x^2=1(mod n)的所有解
想了很久没想出来。。我还是太弱了。。
最近我经常看不出结论,或者不知道是否正确不敢写。。
首先变形一下式子,(x+1)(x-1)=0(mod n)
接着是最重要的一步,要知道一个结论:x和x+2的公因数只有可能为2。。。
我推出了x和x+k的公因数必不超过k,用gcd递归定理证明非常简单:
gcd(x+k,x)=gcd(x,(x+k) mod x)={
gcd(x,0)=x k=tx,则x=k/t<=k
gcd(x,k)<=k
}
然后由于(x+1)(x-1)=0(mod n)的含义是(x+1)(x-1)有n所有的因子,
而且x(x+k),x若有因子k,则x+k也必有因子k,
所以遇到n为4的倍数这种情况,同时消去公因子即可
之后,x,x+k就没有公因子了,可以分开讨论了,即n|x+1 或 n|x-1。。
最后扩展gcd即可。。
想了很久没想出来。。我还是太弱了。。
最近我经常看不出结论,或者不知道是否正确不敢写。。
首先变形一下式子,(x+1)(x-1)=0(mod n)
接着是最重要的一步,要知道一个结论:x和x+2的公因数只有可能为2。。。
我推出了x和x+k的公因数必不超过k,用gcd递归定理证明非常简单:
gcd(x+k,x)=gcd(x,(x+k) mod x)={
gcd(x,0)=x k=tx,则x=k/t<=k
gcd(x,k)<=k
}
然后由于(x+1)(x-1)=0(mod n)的含义是(x+1)(x-1)有n所有的因子,
而且x(x+k),x若有因子k,则x+k也必有因子k,
所以遇到n为4的倍数这种情况,同时消去公因子即可
之后,x,x+k就没有公因子了,可以分开讨论了,即n|x+1 或 n|x-1。。
最后扩展gcd即可。。