二次剩余
定义
存在正整数 a a a 满足 a 2 ≡ n ( m o d p ) {a}^2\equiv n\pmod{p} a 2 ≡ n ( m o d p ) 的正整数 n n n 是在模 p p p 的意义下的二次剩余,其中 p p p 为奇质数。
前提
对于一个存在的正整数 a a a 使得 n n n 是二次剩余的前提,即 a p − 1 2 ≡ 1 ( m o d p ) {a}^{\frac{p-1}{2} }\equiv1\pmod{p} a 2 p − 1 ≡ 1 ( m o d p ) ,证明:
由费马小定理知对于任意的正整数 n n n 都有 n p − 1 ≡ 1 ( m o d p ) {n}^{p-1}\equiv 1\pmod{p} n p − 1 ≡ 1 ( m o d p ) ,且 a 2 ≡ n ( m o d p ) {a^2}\equiv n\pmod{p} a 2 ≡ n ( m o d p ) ,即 a ≡ n 1 2 ( m o d p ) a\equiv {n}^{\frac{1}{2} }\pmod{p} a ≡ n 2 1 ( m o d p ) ,带入就有 a p − 1 2 ≡ 1 ( m o d p ) {a}^{\frac{p-1}{2} }\equiv1\pmod{p} a 2 p − 1 ≡ 1 ( m o d p ) ,证毕。
如果一个正整数不是二次剩余,那么他就是非二次剩余。
解数
对于 a 2 ≡ n ( m o d p ) a^2\equiv n \pmod{p} a 2 ≡ n ( m o d p ) ,我们考虑 p p p 的既约剩余系为:
− p − 1 2 , − p − 1 2 + 1 , ⋯ , − 1 , 1 , ⋯ , p − 1 2 − 1 , p − 1 2 -\frac{p-1}{2},-\frac{p-1}{2}+1,\cdots,-1,1,\cdots ,\frac{p-1}{2}-1,\frac{p-1}{2} − 2 p − 1 , − 2 p − 1 + 1 , ⋯ , − 1 , 1 , ⋯ , 2 p − 1 − 1 , 2 p − 1 。
此时 n n n 仅有可能与 ( − p − 1 2 ) 2 , ( − p − 1 2 + 1 ) 2 , ⋯ , ( − 1 ) 2 , ( 1 ) 2 , ⋯ , ( p − 1 2 − 1 ) 2 , ( p − 1 2 ) 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 ( − 2 p − 1 ) 2 , ( − 2 p − 1 + 1 ) 2 , ⋯ , ( − 1 ) 2 , ( 1 ) 2 , ⋯ , ( 2 p − 1 − 1 ) 2 , ( 2 p − 1 ) 2 同余。
而对于 ( − p − 1 2 ) 2 = ( p − 1 2 ) 2 (-\frac{p-1}{2})^2=(\frac{p-1}{2})^2 ( − 2 p − 1 ) 2 = ( 2 p − 1 ) 2 ,意味着其实只有 p − 1 2 \frac{p-1}{2} 2 p − 1 个数与 n n n 同余,而对于这 p − 1 2 \frac{p-1}{2} 2 p − 1 个数而言,由于他们共同构成了模 p p p 意义下的既约剩余系,所以两两互质,那么使得可能存在的二次剩余只有 p − 1 2 \frac{p-1}{2} 2 p − 1 个,而对于其他的 p − 1 2 \frac{p-1}{2} 2 p − 1 个数而言,他们是非二次剩余。
这就意味着只会有 p − 1 2 \frac{p-1}{2} 2 p − 1 即大约一半的数是二次剩余,而对于 a 2 ≡ n ( m o d p ) a^2\equiv n\pmod{p} a 2 ≡ n ( m o d p ) ,同一个正整数 n n n 会有两个解 a 1 ≡ − n , a 2 ≡ n ( m o d p ) a_1\equiv-n,a_2\equiv n\pmod{p} a 1 ≡ − n , a 2 ≡ n ( m o d p ) 。
Euler 判别法
现在考虑如何判别 ω 2 {\omega}^2 ω 2 是不是一个二次剩余:由费马小定理知 ( ω 2 ) p − 1 ≡ 1 ( m o d p ) {(\omega}^{2})^{p-1}\equiv1\pmod{p} ( ω 2 ) p − 1 ≡ 1 ( m o d p ) ,那么 ( ω 2 ) p − 1 − 1 ≡ 0 ( m o d p ) {(\omega}^{2})^{p-1}-1\equiv0\pmod{p} ( ω 2 ) p − 1 − 1 ≡ 0 ( m o d p ) ,所以 ( ω p − 1 − 1 ) ( ω p − 1 + 1 ) ≡ 1 ( m o d p ) ({\omega}^{p-1}-1)({\omega}^{p-1}+1)\equiv1\pmod{p} ( ω p − 1 − 1 ) ( ω p − 1 + 1 ) ≡ 1 ( m o d p ) ,因为 ω \omega ω 是二次剩余时,满足 ω p − 1 ≡ 1 ( m o d p ) {\omega}^{p-1}\equiv1\pmod{p} ω p − 1 ≡ 1 ( m o d p ) ;所以 ω \omega ω 是非二次剩余时,满足 ω p − 1 ≡ − 1 ( m o d p ) {\omega}^{p-1}\equiv -1\pmod{p} ω p − 1 ≡ − 1 ( m o d p ) 。综上所述,对于任意的一个正整数 d d d 是非二次剩余的条件是 d p − 1 2 ≡ − 1 ( m o d p ) d^{\frac{p-1}{2} }\equiv -1\pmod{p} d 2 p − 1 ≡ − 1 ( m o d p ) ,即 Euler \text{Euler} Euler 判别法。
解法
参考了神仙 yyb 的博客 。
考虑构造一个复数 ω = a 2 − n \omega=\sqrt{a^2-n} ω = a 2 − n ,使得 ω 2 {\omega}^2 ω 2 是一个非二次剩余。而由于大概有一半的解数,那么构造的期望次数为 2 2 2 。此时通过 Euler \text{Euler} Euler 判别法判断 ω 2 {\omega}^{2} ω 2 是一个非二次剩余。
那么 n = a 2 − ω 2 = ( a − ω ) ( a + ω ) n=a^2-{\omega}^2=(a-\omega)(a+\omega) n = a 2 − ω 2 = ( a − ω ) ( a + ω ) ,考虑分成 a − ω , a + ω a-\omega,a+\omega a − ω , a + ω 两个部分求解。
对于 a − ω a-\omega a − ω 的部分,据引理 ω p ≡ − ω ( m o d p ) {\omega}^{p}\equiv-\omega\pmod{p} ω p ≡ − ω ( m o d p ) ,证明放在结尾。那么易知,a − ω ≡ a p + ω p ( m o d p ) a-\omega\equiv{a}^{p}+{\omega}^{p}\pmod{p} a − ω ≡ a p + ω p ( m o d p ) 。
对于 a + ω {a+\omega} a + ω 的部分,由于 ( a + ω ) p ≡ a p + ω p ( m o d p ) (a+\omega)^p\equiv{a}^{p}+{\omega}^{p}\pmod{p} ( a + ω ) p ≡ a p + ω p ( m o d p ) (考虑二项式定理展开后 p p p 无法整除 ( n 0 ) , ( n n ) \binom{n}{0},\binom{n}{n} ( 0 n ) , ( n n ) ),所以有 ( a + ω ) p + 1 ≡ ( a p + ω p ) ( a + ω ) ≡ ( a + ω ) ( a − ω ) = n ( m o d p ) (a+\omega)^{p+1}\equiv(a^p+{\omega}^{p})(a+\omega)\equiv(a+\omega)(a-\omega)=n\pmod{p} ( a + ω ) p + 1 ≡ ( a p + ω p ) ( a + ω ) ≡ ( a + ω ) ( a − ω ) = n ( m o d p ) 。
那么对于 a 2 ≡ n ( m o d p ) {a}^{2}\equiv n\pmod{p} a 2 ≡ n ( m o d p ) ,由于 ( a + ω ) p + 1 ≡ n ( m o d p ) (a+\omega)^{p+1}\equiv n\pmod{p} ( a + ω ) p + 1 ≡ n ( m o d p ) ,即 a ≡ ( a + ω ) p + 1 2 ( m o d p ) {a}\equiv(a+\omega)^{\frac{p+1}{2} }\pmod{p} a ≡ ( a + ω ) 2 p + 1 ( m o d p ) 。考虑 a ≡ ( a + ω ) p + 1 2 ≡ a p + 1 2 + ω p + 1 2 ≡ ω p + 1 2 ( m o d p ) 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} a ≡ ( a + ω ) 2 p + 1 ≡ a 2 p + 1 + ω 2 p + 1 ≡ ω 2 p + 1 ( m o d p ) 那么 ω p + 1 2 {\omega}^{\frac{p+1}{2} } ω 2 p + 1 是 n n n 在模 p p p 意义下的一个二次剩余,相应地,其相反数则是另一个二次剩余。
现在考虑证明 ω p ≡ − ω ( m o d p ) {\omega}^{p}\equiv-\omega\pmod{p} ω p ≡ − ω ( m o d p ) :因为 ω \omega ω 是一个复数,所以 ω p − 1 ≠ 1 ( m o d p ) {\omega}^{p-1}\ne 1\pmod{p} ω p − 1 = 1 ( m o d p ) ,注意此处的符号 ≠ \ne = 表示 “不同余”,所以可以借此来判断 ω 2 {\omega}^{2} ω 2 不是一个二次剩余。但是 ( ω 2 ) p − 1 ≡ 1 ( m o d p ) ({\omega}^{2})^{p-1}\equiv1\pmod{p} ( ω 2 ) p − 1 ≡ 1 ( m o d p ) ,故 ω p − 1 ≡ − 1 ( m o d p ) {\omega}^{p-1}\equiv-1\pmod{p} ω p − 1 ≡ − 1 ( m o d p ) ,所以 ω p ≡ − ω ( m o d p ) {\omega}^{p}\equiv-\omega\pmod{p} ω p ≡ − ω ( m o d 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);
}