对于整数 q , n q,n q,n,若存在 x x x 使得
x 2 ≡ q m o d n x^2\equiv q\mod n x2≡qmodn
则称 q q q 是 n n n 的二次剩余,否则 q q q 是 n n n 的非二次剩余
对于奇质数 p p p,引入 L e g e n d r e Legendre Legendre 符号
( a p ) = { 0 p ∣ a − 1 p ∤ a , a 不 是 模 p 意 义 下 的 二 次 剩 余 1 p ∤ a , a 是 模 p 意 义 下 的 二 次 剩 余 \left(\frac{a}{p}\right)=\left\{ \begin{aligned} & 0 & p|a \\ & -1 & p\nmid a,a 不是模 p 意义下的二次剩余 \\ & 1 & p\nmid a,a 是模 p 意义下的二次剩余 \end{aligned} \right. (pa)=⎩⎪⎨⎪⎧0−11p∣ap∤a,a不是模p意义下的二次剩余p∤a,a是模p意义下的二次剩余
性质:恰有 p − 1 2 \frac{p-1}{2} 2p−1 个二次剩余
a 2 ≡ b 2 m o d p → a ≡ b m o d p 或 a ≡ − b m o d p a^2\equiv b^2\mod p \rightarrow a\equiv b \mod p\text{或} a\equiv -b \mod p a2≡b2modp→a≡bmodp或a≡−bmodp
对于奇质数 p p p
( a p ) = a p − 1 2 m o d p \left(\frac{a}{p}\right)=a^{\frac{p-1}{2}}\mod p (pa)=a2p−1modp
只需考虑 a ≢ 0 m o d p a \not \equiv 0\mod p a≡0modp 的情况
a p − 1 ≡ 1 → a p − 1 2 ≡ ± 1 a^{p-1}\equiv 1 \rightarrow a^{\frac{p-1}{2}}\equiv \pm 1 ap−1≡1→a2p−1≡±1
a ≡ t 2 → a p − 1 2 ≡ t p − 1 ≡ 1 a\equiv t^2\rightarrow a^{\frac{p-1}{2}}\equiv t^{p-1}\equiv 1 a≡t2→a2p−1≡tp−1≡1
推论:
( a p ) ( b p ) = ( a b p ) \left(\frac{a}{p}\right)\left(\frac{b}{p}\right)=\left(\frac{ab}{p}\right) (pa)(pb)=(pab)
如果要找一个二次剩余,那么期望两次可以猜中
摘自 https://www.zhihu.com/question/59572768/answer/254653900
对于奇质数 p , q p,q p,q
( q p ) ( p q ) = ( − 1 ) p − 1 2 q − 1 2 \left(\frac{q}{p}\right)\left(\frac{p}{q}\right)=(-1)^{\frac{p-1}{2}\frac{q-1}{2}} (pq)(qp)=(−1)2p−12q−1
高斯引理:
对于 ( a , p ) = 1 (a,p)=1 (a,p)=1, ( a p ) = ( − 1 ) S \left(\frac{a}{p}\right)=(-1)^S (pa)=(−1)S,其中 S S S 定义为 { a , 2 a , … , p − 1 2 a } \{a,2a,\dots,\frac{p-1}{2}a\} {a,2a,…,2p−1a} 中最小剩余系大于 p − 1 2 \frac{p-1}{2} 2p−1 的个数
首先这 p − 1 2 \frac{p-1}{2} 2p−1 个数有一些落在 p − 1 2 \frac{p-1}{2} 2p−1 之前,有些在之后
将之前的集合记为 { v 1 , v 2 , … , v t } \{v_1,v_2,\dots,v_t\} {v1,v2,…,vt},之后的集合记为 { u 1 , u 2 , … , u S } \{u_1,u_2,\dots,u_S\} {u1,u2,…,uS}
下面证 { v 1 , v 2 , … , v t , p − u 1 , p − u 2 , … , p − u S } \{v_1,v_2,\dots,v_t,p-u_1,p-u_2,\dots,p-u_S\} {v1,v2,…,vt,p−u1,p−u2,…,p−uS} 取遍 [ 1 , p − 1 2 ] [1,\frac{p-1}{2}] [1,2p−1] 的所有数
v i ≢ v j , u i ≢ u j v_i\not\equiv v_j,u_i\not\equiv u_j vi≡vj,ui≡uj,若 v i ≡ p − u j v_i\equiv p-u_j vi≡p−uj 则有 m a ≡ − n a ma\equiv -na ma≡−na,而 m , n ≤ p − 1 2 m,n\le \frac{p-1}{2} m,n≤2p−1 显然不存在
于是有 ( − 1 ) S ∏ v i ∏ u i ≡ ( p − 1 2 ) ! (-1)^S\prod v_i\prod u_i\equiv (\frac{p-1}{2})! (−1)S∏vi∏ui≡(2p−1)!
而 ∏ v i ∏ u i ≡ ( p − 1 2 ) ! a p − 1 2 \prod v_i\prod u_i \equiv (\frac{p-1}{2})!a^{\frac{p-1}{2}} ∏vi∏ui≡(2p−1)!a2p−1
故得证
引理:
对于奇质数 p p p 以及奇数 a a a, ( a p ) = ( − 1 ) T ( a , p ) \left(\frac{a}{p}\right)=(-1)^{T(a,p)} (pa)=(−1)T(a,p)
其中 T ( a , p ) = ∑ i = 1 p − 1 2 ⌊ a i p ⌋ T(a,p)=\sum_{i=1}^{\frac{p-1}{2}}\lfloor\frac{ai}{p}\rfloor T(a,p)=∑i=12p−1⌊pai⌋
首先知道
∑ v i + ∑ u i + ∑ i = 1 p − 1 2 ⌊ a i p ⌋ p = ∑ i = 1 p − 1 2 i a \sum v_i+\sum u_i+\sum_{i=1}^{\frac{p-1}{2}}\lfloor\frac{ai}{p}\rfloor p=\sum_{i=1}^{\frac{p-1}{2}}ia ∑vi+∑ui+i=1∑2p−1⌊pai⌋p=i=1∑2p−1ia
又知道
∑ i = 1 p − 1 2 i = ∑ p − u i + ∑ v i = p S − ∑ u i + ∑ v i \sum_{i=1}^{\frac{p-1}{2}}i=\sum p-u_i+\sum v_i=pS-\sum u_i+\sum v_i i=1∑2p−1i=∑p−ui+∑vi=pS−∑ui+∑vi
相减得
( a − 1 ) ∑ i = 1 p − 1 2 i = p T ( a , p ) − p S + 2 ∑ u i (a-1)\sum_{i=1}^{\frac{p-1}{2}}i=pT(a,p)-pS+2\sum u_i (a−1)i=1∑2p−1i=pT(a,p)−pS+2∑ui
模一个 2
T ( a , p ) ≡ S m o d 2 T(a,p)\equiv S \mod 2 T(a,p)≡Smod2
容易发现 T ( a , p ) T(a,p) T(a,p) 实质是一个整点计数,且 T ( a , p ) + T ( p , a ) = p − 1 2 a − 1 2 T(a,p)+T(p,a)=\frac{p-1}{2}\frac{a-1}{2} T(a,p)+T(p,a)=2p−12a−1(这里 a a a 需要是奇质数)
那么只需要证直线 y = a x p y=\frac{ax}{p} y=pax 不经过 x ∈ [ 1 , p − 1 2 ] x\in [1,\frac{p-1}{2}] x∈[1,2p−1] 的整点即可,显然不经过,故得证
求 x x x 使得 x 2 ≡ n m o d p x^2\equiv n\mod p x2≡nmodp
求出原根及 n n n 的指标 r r r,输出 g ± r 2 g^{\pm \frac{r}{2}} g±2r 即可, O ( p ) O(\sqrt p) O(p)
Cipolla算法:
可以在 p o l y l o g ( p ) polylog(p) polylog(p) 的时间求解
正确性证明:
记 ω = a 2 − n \omega =\sqrt{a^2-n} ω=a2−n
( a − ω ) p + 1 = ( a − ω ) p ( a − ω ) = ( a p − ω p ) ( a − ω ) = ( a − ( a 2 − n ) p − 1 2 ω ) ( a − ω ) = ( a + ω ) ( a − ω ) = n (a-\omega)^{p+1}=(a-\omega)^p(a-\omega)\\=(a^p-\omega^p)(a-\omega)\\=(a-(a^2-n)^{\frac{p-1}{2}}\omega)(a-\omega)\\=(a+\omega)(a-\omega)=n (a−ω)p+1=(a−ω)p(a−ω)=(ap−ωp)(a−ω)=(a−(a2−n)2p−1ω)(a−ω)=(a+ω)(a−ω)=n
需要封装一个 a + ω b a+\omega b a+ωb 的系数类
节选自:https://blog.csdn.net/zxyoi_dreamer/article/details/85195819
令 n = p r a , p ∤ a , 0 ≤ r < k n=p^ra,p\nmid a,0\le r
令 x = p r / 2 x ′ x=p^{r/2}x' x=pr/2x′,即解 x ′ 2 ≡ a m o d p k − r x'^2\equiv a\mod p^{k-r} x′2≡amodpk−r
先接出 r 2 ≡ a m o d p r^2\equiv a \mod p r2≡amodp,令 ( r 2 − a ) k ≡ t 2 − u 2 a m o d p k (r^2-a)^k\equiv t^2-u^2a\mod p^k (r2−a)k≡t2−u2amodpk
可以利用 ( r + a ) k = t + u a (r+\sqrt a)^k=t+u\sqrt a (r+a)k=t+ua 算出 u , t u,t u,t
于是 a ≡ u − 2 t 2 m o d p k a\equiv u^{-2}t^2\mod p^k a≡u−2t2modpk,故 x ′ ≡ u − 1 t m o d p k x'\equiv u^{-1}t\mod p^k x′≡u−1tmodpk,只需用 e x g c d exgcd exgcd 求逆即可
当 p = 4 p=4 p=4 时,恰有两个解,分别为 1 , 3 1,3 1,3
其余情况,显然任意奇数模 8 余 1,故只有模 8 余 1 的奇数有二次剩余
当 p = 8 p=8 p=8 时,恰有 4 个解,分别为 ± 1 , ± 3 \pm 1,\pm 3 ±1,±3
性质:当 p ≥ 8 p\ge 8 p≥8 时,对于 a ≡ 1 m o d 8 a\equiv 1\mod 8 a≡1mod8,当 x 2 ≡ a m o d p x^2\equiv a\mod p x2≡amodp 恰有 4 个解,分别为 ± x k , ± ( 2 k − 1 − x k ) \pm x_k,\pm (2^{k-1}-x_k) ±xk,±(2k−1−xk)
归纳证明:设 x 2 ≡ a m o d 2 k x^2\equiv a\mod 2^k x2≡amod2k 的 4 个解为 x k , 2 k − 1 − x k x_k,2^{k-1}-x_k xk,2k−1−xk
有 x k 2 − ( 2 k − 1 − x k ) 2 ≡ x k 2 k ≡ 2 k m o d 2 k + 1 x_k^2-(2^{k-1}-x_k)^2\equiv x_k2^k\equiv 2^k\mod 2^{k+1} xk2−(2k−1−xk)2≡xk2k≡2kmod2k+1
故 x k , 2 k − 1 − x k x_k,2^{k-1}-x_k xk,2k−1−xk 恰有一个可以作为 x k + 1 x_{k+1} xk+1
而 ( 2 k − x k + 1 ) 2 ≡ x k + 1 2 m o d 2 k + 1 (2^k-x_{k+1})^2\equiv x_{k+1}^2 \mod 2^{k+1} (2k−xk+1)2≡xk+12mod2k+1 故存在 4 个 x k + 1 x_{k+1} xk+1
下面将通过一个不断升幂的构造方法求解:
通过上面的叙述,我们知道, x k + 1 x_{k+1} xk+1 可以表示为 x k + t k 2 k − 1 x_k+t_{k}2^{k-1} xk+tk2k−1
要求: x k + 1 2 ≡ ( x k + t k 2 k − 1 ) 2 ≡ x k 2 + 2 k t k ≡ a m o d 2 k + 1 x_{k+1}^2\equiv(x_k+t_k2^{k-1})^2\equiv x_k^2+2^kt_k\equiv a\mod 2^{k+1} xk+12≡(xk+tk2k−1)2≡xk2+2ktk≡amod2k+1
那么 t k ≡ a − x k 2 2 k t_k\equiv \frac{a-x_k^2}{2^k} tk≡2ka−xk2 故可以 O ( k ) O(k) O(k) 求解
任意模数: c r t crt crt 即可