二次剩余学习笔记
前言
咕了很久,一直想学这算法来着,真是神仙算法。。。
问题:
求解(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}))。