N次剩余
给定 (N,a,P),且 (P) 最好为质数
可以算出 (x^Nequiv a(mod~p)) 的解
首先可以算出 (P) 的原根 (g)
解方程 (g^yequiv b(mod~p)),这个直接 (BSGS)
设 (g^zequiv x(mod~p))
那么 (g^{za}=g^y(mod~p)iff zaequiv y(mod~varphi(p))),这个直接 (exgcd)
无解在 (BSGS) 和 (exgcd) 的时候判掉,最后快速幂得到答案
二次剩余
求 (x^2equiv n(mod~p))的一个解 (x),其中 (p) 为一个奇素数
有二次剩余的条件
证明
首先有 (n^{p-1}equiv 1(mod~p))
若存在一个解 (a),那么 (a^{p-1}equiv 1(mod~p)) 且 (a^{2}equiv n(mod~p))
所以
算法一
如果 (g) 为 (p) 的原根,且 (g^{a}equiv n(mod~p)) 那么解就是 (g^{frac{a}{2}})
证明
结合上面的条件,有 (g^{afrac{p-1}{2}}equiv 1(mod~p))
因为 (g^{p-1}equiv 1(mod~p)),那么 (a) 一定为偶数
可以在 (Theta(sqrt{p})) 的复杂度内找到解
算法二
随机一个数字 (a)
使得 (a^2-n) 不存在二次剩余,期望次数为 (2)
定义一个新的数域,设 (omega = sqrt{a^2-n}) (类似于 (i=sqrt{-1}))
那么所有的数都可以表示为 (a+bomega) 的形式
根据有解的条件可以得到
而 (omega^{2(p-1)}equiv 1(mod~p)) 所以 (omega^{p-1}equiv -1(mod~p))
定理 ((a+omega)^{p}=a-omega)
证明
二项式定理展开得到 (sum_{i=0}^{p}inom{p}{i}a^iomega^{p-i})
显然除了第 (0) 项和第 (p) 项的组合数不是 (p) 的倍数
那么就是 (a^p+omega^{p})
由于 (a^{p-1}equiv 1(mod~p)) 且 (omega^{p-1}equiv -1(mod~p))
那么得到 (a^p+omega^{p}=a-omega)
这就好了,因为 ((a-omega)(a+omega)=a^2-omega^2=n)
所以 ((a+omega)^{frac{p+1}{2}}equiv sqrt{n}(mod~p))
现在只要证明 ((a+omega)^{frac{p+1}{2}}) 不存在 (omega) 项就好了
假设 ((a+omega)^{frac{p+1}{2}}=x+yomega)
那么 ((x+yomega)^2=n)
所以 (x=0) 或者 (y=0)
如果 (x=0) 且 (y
e0),那么 ((x+yomega)^2=y^2(a^2-n)=n)
因为 (a^2-n) 没有二次剩余,而 (y^2) 显然有二次剩余
所以 (n) 没有二次剩余,矛盾
得到 (y= 0)
总结一下
第一步随机一个 (a),使得(a^2-n) 不存在二次剩余
第二步直接重载运算求出 ((a+omega)^{frac{p+1}{2}}) 即 (n) 的二次剩余