二次剩余学习笔记
二次剩余学习笔记
前言
咕了很久,一直想学这算法来着,真是神仙算法。。。
问题:
求解\(x^2 \equiv n \pmod{p}(p为奇素数)\)
解析
定义1
称\(n\)为模\(p\)意义下的二次剩余当且仅当\(x^2 \equiv n \pmod{p}\)有解,非二次剩余同理。
定理1
当且仅当\(n^{\frac{p-1}{2}} \equiv 1 \pmod{p}\)时,\(n\)为二次剩余,反之,若\(n^{\frac{p-1}{2}} \equiv -1 \pmod{p}\),则\(n\)为非二次剩余(不对\(n=0\)做考虑)。
证明1
先考虑\(n^{\frac{p-1}{2}}\)的取值情况,有:
即有:
所以:
而当\(n\)为二次剩余时,有\(x^2 \equiv n \pmod{p}\),又\(x^{p-1} \equiv 1 \pmod{p}\),所以:\(n^{\frac{p-1}{2}} \equiv 1 \pmod{p}\),反之,若\(n\)为非二次剩余,那么有:\(n^{\frac{p-1}{2}} \equiv -1 \pmod{p}\),得证。
定义2
类似复数的,我们对于模\(p\)意义下的非二次剩余\(x\),定义类似虚部的数\(i=\sqrt{x}\),当然,这样得到一类数的表示方法\(a+bi\),我们类比复数定义这一类数的运算,那么这一类数的四则运算具有自封闭性。
定理2
若\(\omega=a^2-n\)为非二次剩余,那么\((a+\sqrt{\omega})^{\frac{p+1}{2}}\)(其中\(\sqrt{w}\)即可看做虚根做运算)即为\(n\)二次剩余的根,另一个根即为相反数。
证明2
先考虑一个式子\((a+\sqrt{\omega})^{p}\),用二项式定理展开,有:
又因为在模\(p\)意义下,当\(i不为0或p\)时,\({p \choose i} \equiv 0 \pmod{p}\)(展开一下就是了),那么有:
所以:
得证。
定理3
对于\(0 \lt n \leq p-1\),有\(\frac{p-1}{2}\)个\(n\)为二次剩余。
证明3
很简单,直接枚举作为根的\(x\),\(x\)有\(p-1\)中取值(不考虑0),而\(x^2 \equiv (p-x)^2\)
所以二次剩余只有\(\frac{p-1}{2}\)个取值,得证。
那么现在的唯一问题就是如何找到合适的\(a\)使得\(\omega\)满足条件,我们考虑随机,由定理3可知,\(a^2-n\)在模\(p\)意义下为非二次剩余的概率为\(\frac{p-1}{2p}\),那么这样随机的期望次数就接近于2,可以看做是\(O(1)\)求。自此,我们解决了这个具有特殊性的二次剩余,算法复杂度是多少呢?因为其中要快速幂,复杂度为\(O(\log{p})\)。