二次剩余:
对于整数
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
Euler判别法:
对于奇质数
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 a a,使得 a 2 − n a^2-n a2−n 是模 p p p 的非二次剩余
- 输出 ± ( a − a 2 − n ) p + 1 2 \pm (a-\sqrt{a^2-n})^{\frac{p+1}{2}} ±(a−a2−n)2p+1
正确性证明:
记
ω
=
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 的系数类
模 p k p^k pk 意义下的二次剩余求解
节选自: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<k
n=pra,p∤a,0≤r<k,有解时显然需要
r
r
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 求逆即可
模 2 k 2^k 2k 意义下的二次剩余求解
当
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 即可