
本文共 5362 字,大约阅读时间需要 17 分钟。
概念
二次同余方程 x 2 ≡ n ( m o d p ) x^2\equiv n(mod~~p) x2≡n(mod p),其中 n , p n,p n,p已知且互质且 p p p为奇质数,求 x x x
这样的二次同余方程若有解,则称 n n n是模 p p p的二次剩余,同时 x x x为该二次同余方程的解
实际上二次同余方程也在解决 x ≡ n ( m o d p ) \sqrt{x} \equiv n(mod~~p) x≡n(mod p),意为如果该二次同余方程有解,那么 n n n可以在模 p p p意义下开根号
二次剩余
定理一
在模 p p p的缩系 B = { 1 , 2 , . . . , p − 1 } B=\{1,2,...,p-1\} B={ 1,2,...,p−1},有 p − 1 2 \frac{p-1}{2} 2p−1个模 p p p的二次剩余和 p − 1 2 \frac{p-1}{2} 2p−1个非二次剩余,且二次剩余的集合为 A = { < 1 2 > p , < 2 2 > p , . . . < ( p − 1 2 ) 2 > p } A=\{<1^2>_p,<2^2>_p,...<(\frac{p-1}{2})^2>_p\} A={ <12>p,<22>p,...<(2p−1)2>p},其中 < x > p = x % p <x>_p=x\%p <x>p=x%p
-
推论一: A A A中的元素两两不同
证明:利用反证法:假设 < i 2 > p = < j 2 > p <i^2>_p = <j^2>_p <i2>p=<j2>p,又因为 < i 2 > p ≡ i 2 ( m o d p ) , < j 2 > p ≡ j 2 ( m o d p ) <i^2>_p \equiv i^2(mod~~p),<j^2>_p \equiv j^2(mod~~p) <i2>p≡i2(mod p),<j2>p≡j2(mod p),所以 i 2 ≡ j 2 ( m o d p ) i^2 \equiv j^2(mod~~p) i2≡j2(mod p),变形得到 ( i + j ) ( i − j ) ≡ 0 ( m o d p ) (i+j)(i-j) \equiv 0(mod~~p) (i+j)(i−j)≡0(mod p)。根据同余的性质那么有 p ∣ ( i + j ) ( i − j ) p|(i+j)(i-j) p∣(i+j)(i−j),又因为 i , j ≤ p − 1 2 i,j \leq \frac{p-1}{2} i,j≤2p−1,所以 i + j ≤ p − 1 2 , i − j ≤ p − 1 2 i+j \leq \frac{p-1}{2},i-j \leq \frac{p-1}{2} i+j≤2p−1,i−j≤2p−1。显然小于 p p p的数都和 p p p互质,故 p ∣ ( i + j ) ( i − j ) p|(i+j)(i-j) p∣(i+j)(i−j)不成立,即原假设不成立
-
推论二:设 n n n是模 p p p的二次剩余,二次同余方程 x 2 ≡ p x^2 \equiv p x2≡p的一个解为 x 0 x_0 x0,那么 p − x 0 p-x_0 p−x0是另外一个解
证明:显然 ( p − x ) 2 = p 2 − 2 p x + x 2 ≡ n ( m o d p ) (p-x)^2=p^2-2px+x^2 \equiv n(mod~~p) (p−x)2=p2−2px+x2≡n(mod p)成立
勒让德符号
不难发现勒让德符号是积性函数
定理二
n p − 1 2 ≡ ± 1 ( m o d p ) n^{\frac{p-1}{2}} \equiv \pm1(mod~~p) n2p−1≡±1(mod p)
证明:
由费马小定理, p p p为素数, n n n为正整数,且 n , p n,p n,p互质。 则有 n p − 1 ≡ 1 ( m o d p ) n^{p−1} \equiv 1 (mod~~p) np−1≡1(mod p)。变形得 n p − 1 − 1 ≡ ( n p − 1 2 + 1 ) ( n p − 1 2 − 1 ) ≡ 0 ( m o d p ) n^{p-1}-1 \equiv (n^{\frac{p-1}{2}}+1)(n^{\frac{p-1}{2}}-1) \equiv 0(mod~~p) np−1−1≡(n2p−1+1)(n2p−1−1)≡0(mod p),那么 n p − 1 2 ≡ ( m o d p ) n^{\frac{p-1}{2}} \equiv (mod~~p) n2p−1≡(mod p)
-
推论一:若 n p − 1 2 ≡ 1 n^{\frac{p-1}{2}} \equiv 1 n2p−1≡1,则 ( n p ) = 1 (\frac{n}{p})=1 (pn)=1。即方程有解当且仅当 n p − 1 2 ≡ 1 ( m o d p ) n^{\frac{p-1}{2}} \equiv 1(mod~~p) n2p−1≡1(mod p)(实际上二者互为充要条件)
证明:设同余方程 x p − 1 2 ≡ 1 ( m o d p ) x^{\frac{p-1}{2}} \equiv 1(mod~~p) x2p−1≡1(mod p)的解的个数为 y y y,由拉格朗日定理得出 y ≤ p − 1 2 y\leq \frac{p-1}{2} y≤2p−1。假设 < i 2 > p ∈ A <i^2>_p \in A <i2>p∈A,那么:
( < i 2 > p ) p − 1 2 ≡ ( i 2 ) p − 1 2 = i p − 1 ≡ 1 (<i^2>_p)^{\frac{p-1}{2}} \equiv (i^2)^{\frac{p-1}{2}}=i^{p-1} \equiv 1 (<i2>p)2p−1≡(i2)2p−1=ip−1≡1。可以得知二次剩余集合 A A A中的所有元素均满足上述同余方程,那么 ∀ 1 ≤ x ≤ p − 1 2 \forall 1 \leq x \leq \frac{p-1}{2} ∀1≤x≤2p−1,有 < x 2 > p ≡ n <x^2>_p \equiv n <x2>p≡n,最后得出 x 2 ≡ n x^2 \equiv n x2≡n
-
推论二:欧拉判别准则: n p − 1 2 ≡ ( n p ) n^{\frac{p-1}{2}} \equiv (\frac{n}{p}) n2p−1≡(pn)
证明:由定理二和推论一不难得出
二次同余方程
定理三(Cipolla定理)
设 a a a满足 ω = a 2 − n ω=a^2-n ω=a2−n不是模 p p p的二次剩余,即 x 2 ≡ ω ( m o d p ) x^2\equivω(mod~~p) x2≡ω(mod p)无解,那么 x ≡ ( a + ω ) p + 1 2 x\equiv (a+\sqrt{ω})^{\frac{p+1}{2}} x≡(a+ω)2p+1是二次剩余方程 x 2 ≡ n ( m o d p ) x^2\equiv n(mod~~p) x2≡n(mod p)的解
证明:
由二项式定理和 C p i ≡ 0 ( m o d p ) C_p^i \equiv 0(mod~~p) Cpi≡0(mod p),得 ( a + w ) p = a p + w p − 1 2 w (a+\sqrt{w})^p=a^p+w^{\frac{p-1}{2}}\sqrt{w} (a+w)p=ap+w2p−1w
再由费马小定理和 w w w是模 p p p的非二次剩余,得 a p + w p − 1 2 w = a − w a^p+w^{\frac{p-1}{2}}\sqrt{w}=a-\sqrt{w} ap+w2p−1w=a−w,然后
( a + w ) p + 1 ≡ ( a + w ) p ( a + w ) ≡ ( a − w ) ( a + w ) ≡ a 2 − w ≡ n ( m o d p ) (a+\sqrt{w})^{p+1} \equiv (a+\sqrt{w})^p(a+\sqrt{w}) \equiv (a-\sqrt{w})(a+\sqrt{w}) \equiv a^2-w \equiv n(mod~~p) (a+w)p+1≡(a+w)p(a+w)≡(a−w)(a+w)≡a2−w≡n(mod p)
即 [ ( a + ω ) p + 1 2 ] 2 ≡ n [(a+\sqrt{ω})^{\frac{p+1}{2}}]^2 \equiv n [(a+ω)2p+1]2≡n,因此 ( a + ω ) p + 1 2 ≡ n (a+\sqrt{ω})^{\frac{p+1}{2}} \equiv n (a+ω)2p+1≡n
扩域
实际求 ( a + a 2 − n ) p + 1 2 (a+\sqrt{a^2-n})^{\frac{p+1}{2}} (a+a2−n)2p+1时,由于 w = a 2 − n w=a^{2}-n w=a2−n为模 p p p的非二次剩余,勒让德符号为 − 1 -1 −1
故可将与复数域联系,视为复数域中的 i i i,进行复数域 a + i a+i a+i的快速幂的运算,实部单算,虚部单算,称其为扩域,只是这里 w = a 2 − n w=a^{2}-n w=a2−n,而非 − 1 -1 −1。由拉格朗日定理知,最终 ( a + a 2 − n ) p + 1 2 (a+\sqrt{a^2-n})^{\frac{p+1}{2}} (a+a2−n)2p+1虚部为 0 0 0
算法
算法实现时对 a a a的选择随机,因为大约有一半的数是模 p p p的二次非剩余。函数 s o l v e ( n , p ) solve(n,p) solve(n,p)若不为 − 1 -1 −1代表有解, p − s o l v e ( n , p ) p-solve(n,p) p−solve(n,p)可以得到第二个解(有可能相同)
//二次域struct T { ll p, d; T(ll x, ll y) { p = x, d = y; }};ll w;ll qkp(ll x, ll n, ll p) { ll ans = 1; x %= p; while (n) { if (n & 1) ans = ans * x % p; x = x * x % p; n >>= 1; } return ans;}//二次域乘法T mul(T a, T b, ll p) { T ans(0,0); ans.p = (a.p * b.p % p + a.d * b.d % p * w % p) % p; ans.d = (a.p * b.d % p + a.d * b.p % p) % p; return ans;}//扩域慢速乘T slow_mul(T x, ll n, ll p) { T ans(1, 0); while (n) { if (n & 1) ans = mul(ans, x, p); x = mul(x, x, p); n >>= 1; } return ans;}//勒让德符号ll Legendre(ll a, ll p) { return qkp(a, (p - 1) >> 1, p);}ll getMod(ll a, ll p) { a %= p; if (a < 0) a += p; return a;}ll solve(ll n, ll p) { if (p == 2) return 1; if (Legendre(n, p) + 1 == p) return -1; ll a = -1, t; while (1) { //期望为两次 a = rand() % p; t = a * a - n; w = getMod(t, p); if (Legendre(w, p) + 1 == p) break; } T temp(a, 1); T ans = slow_mul(temp, (p + 1) >> 1, p); return ans.p;}
发表评论
最新留言
关于作者
