二次剩余

给定两个数 n,P , P 为一个质数,且 n<P ,求一个 x ,使得 x2n(mod P)

下面所有的运算都在 mod P 意义下进行。

首先我们要判断是否有解。

根据勒让德记号,我们有 nP12=±1 ,并且上述问题有解当且仅当 nP12=1

a ,满足 w=a2n w 对于 P 不是二次剩余。这个 a 直接随机就好了。

那么最终我们有 x=(a+w)P+12

问题是 w 不存在,我们将 w 如同虚数 i 一样设定,那么由于最终 x 是一个实数,所以直接当虚数来做快速幂最终取实根即可。

证明:
x=(a+w)P+12
x2=(a+w)P+1=(a+w)P(a+w)

由二项式定理得:
(a+w)P=Pk=0CkPak(w)Pk

又由于当 0<k<P 时, CkP mod P=0 ,所以

(a+w)P=aP+(w)P

又由费马小定理 aP1=1,wP12=wP1=1

所以

(a+w)P=aw

所以 x2=(aw)(a+w)=a2w=n

得证

你可能感兴趣的:(二次剩余)