N次剩余和二次剩余 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^{frac{p-1}{2}} equiv 1(mod~p) ]

证明

首先有 (n^{p-1}equiv 1(mod~p))
若存在一个解 (a),那么 (a^{p-1}equiv 1(mod~p))(a^{2}equiv n(mod~p))
所以

[a^{p-1}equiv n^{frac{p-1}{2}}equiv 1(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^{p-1} e 1(mod~p) ]

(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) 的二次剩余