二次剩余

二次剩余

定义

存在正整数 aa 满足 a2n(modp){a}^2\equiv n\pmod{p} 的正整数 nn 是在模 pp 的意义下的二次剩余,其中 pp 为奇质数。

前提

对于一个存在的正整数 aa 使得 nn 是二次剩余的前提,即 ap121(modp){a}^{\frac{p-1}{2} }\equiv1\pmod{p},证明:

由费马小定理知对于任意的正整数 nn 都有 np11(modp){n}^{p-1}\equiv 1\pmod{p},且 a2n(modp){a^2}\equiv n\pmod{p},即 an12(modp)a\equiv {n}^{\frac{1}{2} }\pmod{p},带入就有 ap121(modp){a}^{\frac{p-1}{2} }\equiv1\pmod{p},证毕。

如果一个正整数不是二次剩余,那么他就是非二次剩余。

解数

对于 a2n(modp)a^2\equiv n \pmod{p},我们考虑 pp 的既约剩余系为:

p12,p12+1,,1,1,,p121,p12-\frac{p-1}{2},-\frac{p-1}{2}+1,\cdots,-1,1,\cdots ,\frac{p-1}{2}-1,\frac{p-1}{2}

此时 nn 仅有可能与 (p12)2,(p12+1)2,,(1)2,(1)2,,(p121)2,(p12)2(-\frac{p-1}{2})^2,(-\frac{p-1}{2}+1)^2,\cdots,(-1)^2,(1)^2,\cdots,(\frac{p-1}{2}-1)^2,(\frac{p-1}{2})^2 同余。

而对于 (p12)2=(p12)2(-\frac{p-1}{2})^2=(\frac{p-1}{2})^2,意味着其实只有 p12\frac{p-1}{2} 个数与 nn 同余,而对于这 p12\frac{p-1}{2} 个数而言,由于他们共同构成了模 pp 意义下的既约剩余系,所以两两互质,那么使得可能存在的二次剩余只有 p12\frac{p-1}{2} 个,而对于其他的 p12\frac{p-1}{2} 个数而言,他们是非二次剩余。

这就意味着只会有 p12\frac{p-1}{2} 即大约一半的数是二次剩余,而对于 a2n(modp)a^2\equiv n\pmod{p},同一个正整数 nn 会有两个解 a1n,a2n(modp)a_1\equiv-n,a_2\equiv n\pmod{p}

Euler 判别法

现在考虑如何判别 ω2{\omega}^2 是不是一个二次剩余:由费马小定理知 (ω2)p11(modp){(\omega}^{2})^{p-1}\equiv1\pmod{p},那么 (ω2)p110(modp){(\omega}^{2})^{p-1}-1\equiv0\pmod{p},所以 (ωp11)(ωp1+1)1(modp)({\omega}^{p-1}-1)({\omega}^{p-1}+1)\equiv1\pmod{p},因为 ω\omega 是二次剩余时,满足 ωp11(modp){\omega}^{p-1}\equiv1\pmod{p};所以 ω\omega 是非二次剩余时,满足 ωp11(modp){\omega}^{p-1}\equiv -1\pmod{p}。综上所述,对于任意的一个正整数 dd 是非二次剩余的条件是 dp121(modp)d^{\frac{p-1}{2} }\equiv -1\pmod{p},即 Euler\text{Euler} 判别法。

解法

参考了神仙 yyb 的博客

考虑构造一个复数 ω=a2n\omega=\sqrt{a^2-n},使得 ω2{\omega}^2 是一个非二次剩余。而由于大概有一半的解数,那么构造的期望次数为 22。此时通过 Euler\text{Euler} 判别法判断 ω2{\omega}^{2} 是一个非二次剩余。

那么 n=a2ω2=(aω)(a+ω)n=a^2-{\omega}^2=(a-\omega)(a+\omega),考虑分成 aω,a+ωa-\omega,a+\omega 两个部分求解。

对于 aωa-\omega 的部分,据引理 ωpω(modp){\omega}^{p}\equiv-\omega\pmod{p},证明放在结尾。那么易知,aωap+ωp(modp)a-\omega\equiv{a}^{p}+{\omega}^{p}\pmod{p}

对于 a+ω{a+\omega} 的部分,由于 (a+ω)pap+ωp(modp)(a+\omega)^p\equiv{a}^{p}+{\omega}^{p}\pmod{p}(考虑二项式定理展开后 pp 无法整除 (n0),(nn)\binom{n}{0},\binom{n}{n}),所以有 (a+ω)p+1(ap+ωp)(a+ω)(a+ω)(aω)=n(modp)(a+\omega)^{p+1}\equiv(a^p+{\omega}^{p})(a+\omega)\equiv(a+\omega)(a-\omega)=n\pmod{p}

那么对于 a2n(modp){a}^{2}\equiv n\pmod{p},由于 (a+ω)p+1n(modp)(a+\omega)^{p+1}\equiv n\pmod{p},即 a(a+ω)p+12(modp){a}\equiv(a+\omega)^{\frac{p+1}{2} }\pmod{p}。考虑 a(a+ω)p+12ap+12+ωp+12ωp+12(modp)a\equiv (a+\omega)^{\frac{p+1}{2} }\equiv a^{\frac{p+1}{2} }+{\omega}^{\frac{p+1}{2} }\equiv {\omega}^{\frac{p+1}{2} }\pmod{p} 那么 ωp+12{\omega}^{\frac{p+1}{2} }nn 在模 pp 意义下的一个二次剩余,相应地,其相反数则是另一个二次剩余。

现在考虑证明 ωpω(modp){\omega}^{p}\equiv-\omega\pmod{p}:因为 ω\omega 是一个复数,所以 ωp11(modp){\omega}^{p-1}\ne 1\pmod{p} ,注意此处的符号 \ne 表示 “不同余”,所以可以借此来判断 ω2{\omega}^{2} 不是一个二次剩余。但是 (ω2)p11(modp)({\omega}^{2})^{p-1}\equiv1\pmod{p},故 ωp11(modp){\omega}^{p-1}\equiv-1\pmod{p},所以 ωpω(modp){\omega}^{p}\equiv-\omega\pmod{p}

实现

注意复数运算法则。

模板题:洛谷-P5491 [模板]二次剩余

放一份代码:

#define int long long
while(t--)
{
	scanf("%lld%lld",&n,&p);
	if(n==0){puts("0");continue;}
	if(qpow(n,p>>1)!=1){puts("Hola!");continue;}
	k=rand()%(p-1)+1,w=Abs(k*k-n);//k表示复数的数值
	while(qpow(w,p>>1)==1) k=rand()%(p-1)+1,w=Abs(k*k-n);//Euler判别法
	int ans1=Cpow((Complex){k,1},(p>>1)+1).x,ans2=p-ans1;//复数快速幂
	if(ans1>ans2) swap(ans1,ans2);
	printf("%lld %lld\n",ans1,ans2);
}