【模板】【证明】任意模数下的二次剩余求解

版权声明:转载请声明出处,谢谢配合。 https://blog.csdn.net/zxyoi_dreamer/article/details/85195819

什么是二次剩余问题

就是求解形如 x 2 a   ( m o d   p ) x^2\equiv a \text{ } ( mod\text{ }p )
的关于 x x 的方程。

下面从不同的模数开始分类讨论解决二次剩余问题的方法

几个定义

如果关于 x x 的方程
x 2 a   ( m o d   p ) x^2\equiv a \text{ } ( mod\text{ }p ) 有解。

a a 是模 p p 意义下的二次剩余,否则称为模 p p 意义下的二次非剩余。

为什么会出现二次非剩余,其实很简单。

考虑在 % p \%p 意义下本质不同的数只会有 p p 个。而其中 ( t ) 2 t 2 ( m o d   p ) (-t)^2\equiv t^2(mod\text{ }p) ,根据抽屉原理,总会有至少 O ( p 2 ) O(\frac{p}{2}) 的数无法被 t 2 % p t^2\%p表示出来

勒让德符号( L e g e n d r e   s y m b o l Legendre\text{ }symbol ):
( a p ) = { 1 a % p 1 a % p 0 a 0 ( m o d   p ) (\frac{a}{p})=\left\{ \begin{aligned} 1 &&&a是\%p下的二次剩余 \\ -1 &&&a是\%p下的二次非剩余 \\ 0 &&& a\equiv0(mod\text{ }p) \end{aligned} \right.

稍后会告诉怎么求勒让德符号。

1.模数为奇质数

首先来考虑 p p 是奇质数的情况。


解的存在性问题

欧拉准则:

欧拉准则: ( a p ) a p 1 2 ( m o d   p ) (\frac{a}{p})\equiv a^{\frac{p-1}{2}}(mod\text{ }p)

p a p \mid a 的时候欧拉准则显然成立。

扫描二维码关注公众号,回复: 4605320 查看本文章

否则由费马小定理我们有 a p 1 1 m o d   p ) a^{p-1}\equiv 1(mod\text{ }p)

所以必然有 a p 1 2 ± 1 ( m o d   p ) a^{\frac{p-1}{2}}\equiv \pm1(mod\text{ }p)

先证明 ( a p ) = 1 (\frac{a}{p})=1 的情况

必要性:

a a % p \%p 意义下的二次剩余,即 x , x 2 a ( m o d   p ) \exist x,x^2\equiv a(mod\text{ }p)

那么我们有 a p 1 2 ( x 2 ) p 1 2 x p 1 1 ( m o d   p ) a^{\frac{p-1}2}\equiv (x^2)^{\frac{p-1}2}\equiv x^{p-1}\equiv 1(mod\text{ }p)

必要性证明完毕

充分性:

p p 有一个原根 g g ,那么必然有 g i a ( m o d   p ) g^i\equiv a(mod\text{ }p)

则: g i ( p 1 ) 2 1 ( m o d   p ) g^{\frac{i(p-1)}2}\equiv 1(mod\text{ }p)

由于 g g 为原根,所以必然会有 ( p 1 ) i ( p 1 ) 2 (p-1)\mid\frac{i(p-1)}{2}

i i 是偶数。

必然存在解 x 0 g i 2 ( m o d   p ) x_0\equiv g^{\frac{i}2}(mod\text{ }p)

充分性证毕。

那么 ( a p ) 1 ( m o d   p ) (\frac{a}p)\equiv-1(mod\text{ }p) 的情况也就十分显然了。

首先由费马小定理 a p 1 2 ± 1 ( m o d   p ) a^{\frac{p-1}{2}}\equiv \pm 1(mod\text{ }p)

由于前面的欧拉准则在 ( a p ) = 1 (\frac{a}{p})=1 的必要性,二次非剩余的情况下 x 2 a p 1 1 ( m o d   p ) x^2\equiv a^{p-1}\equiv -1(mod\text{ }p) ,显然不可能,违反了费马小定理。


求解:

O ( log 2 p ) O(\log^2 p) 解法:

首先求出 p 1 = 2 t s p-1=2^ts 2 s 2\nmid s

那么我们要求 x 2 a ( m o d   p ) x^2\equiv a(mod\text{ }{p})

a 1 x 2 1 ( m o d   p ) a^{-1}x^2\equiv 1(mod\text{ }p)

由欧拉准则 a p 1 2 a 2 t 1 s 1 ( m o d   p ) a^{\frac{p-1}2}\equiv a^{2^{t-1}s}\equiv 1(mod\text{ }p)

x i x_i 表示方程 ( a 1 x i 2 ) 2 i 1 ( m o d   p ) (a^{-1}x_i^{2})^{2^{i}}\equiv 1(mod\text{ }p)的根

显然现在有 x t 1 = a s + 1 2 x_{t-1}=a^{\frac{s+1}2} ,我们要求的就是 x 0 x_0

考虑如何从 x q x_q 计算出 x q 1 x_{q-1}

设: ϵ q = a 1 x q 2 \epsilon_q=a^{-1}x_q^2

由定义可以得到 ϵ q 2 q 1 ( m o d   p ) \epsilon_q^{2^q}\equiv 1(mod\text{ }p)

则: ϵ q 2 q 1 ± 1 ( m o d   p ) \epsilon_q^{2^{q-1}}\equiv \pm1(mod\text{ }p)

如果为 1 1 ,直接令 ϵ q 1 = ϵ q , x q 1 = x q \epsilon_{q-1}=\epsilon_q,x_{q-1}=x_q 即可。

否则设 λ x q x q 1 ( m o d   p ) \lambda x_q\equiv x_{q-1}(mod\text{ }p)

显然有 ϵ q 1 2 q 1 ( a 1 x q 2 λ 2 ) 2 q 1 ( m o d   p ) \epsilon_{q-1}^{2^{q-1}}\equiv (a^{-1}x_q^2\lambda^2)^{2^{q-1}}(mod \text{ }p)

则: λ 2 q 1 ( m o d   p ) \lambda^{2^q}\equiv-1(mod\text{ }p)

找到 % p \%p 意义下的任意一个二次非剩余 w w ,根据欧拉准则我们有 w p 1 2 w 2 t 1 s 1 ( m o d   p ) w^{\frac{p-1}2}\equiv w^{2^{t-1}s}\equiv -1(mod\text{ }p)

λ w 2 t 1 q s ( m o d   p ) \lambda\equiv w^{2^{t-1-q}s}(mod\text{ }p) 即可得到下一组解。

在这一部分的最后,会讲解如何寻找 % p \%p 意义下的二次非剩余


O ( log p ) O(\log p) 解法

这个解法由剑桥的Roberto Cipolla教授提出(好像就只是为了求解奇质数情况),故得名 C i p o l l a Cipolla 算法。

还是求解方程 x 2 a ( m o d   p ) x^2\equiv a(mod\text{ }p)

以下所有运算均在 % p \%p 意义下进行

b 2 a w ( m o d   p ) b^2-a\equiv w(mod\text{ }p) ,其中 w w % p \%p 意义下的二次非剩余

由于 w w % p \%p 意义下不存在平方根,类似于虚数设 i = w i=\sqrt w 。类似于复数重新定义 % p \%p 意义下一个数为 ( a , b ) (a,b) ,即 a + b w a+b\sqrt w

接下来定义一个代数系统 < G , + , × > <G,+,\times> 满足: ( a , b ) + ( c , d ) = ( a + c , b + d ) (a,b)+(c,d)=(a+c,b+d) ( a , b ) × ( c , d ) = ( a c + b d w , a d + b c ) (a,b)\times (c,d)= (a c+b d w,a d+b c)

显然 G G 是一个环,不知道什么是环的自行百度,百度百科

既然有结合律了。就可以快速幂。

那么有结论:上述方程的解为 x = ( b + i ) p + 1 2 x=(b+i)^{\frac{p+1}2}

证明如下: x 2 = ( b + i ) p + 1 = ( b + i ) p ( b + i ) \begin{aligned} x^2 &=(b+i)^{p+1} \\ &=(b+i)^p(b+i) \end{aligned}

其中,由二项式定理 ( b + i ) p = k = 0 p C p k b k i p k (b+i)^p=\sum_{k=0}^pC_p^kb^ki^{p-k}

显然当 k ̸ = 0  or  p k\not= 0\text{ or }p C p k 0 ( m o d   p ) C_p^k\equiv 0(mod\text{ }p)

所以有 ( b + i ) p b p + i p b p 1 b + w p 1 2 i b i ( m o d   p ) (b+i)^p\equiv b^p+i^p \equiv b^{p-1}b+w^{\frac{p-1}2}i\equiv b-i(mod\text{ }p)

这个式子的推出同时用到了费马小定理和二次非剩余的特殊性质。

所以可以推出: x 2 ( b i ) ( b + i ) b 2 w a ( m o d   p ) x^2\equiv (b-i)(b+i)\equiv b^2-w\equiv a(mod\text{ }p)

于是我们就得到了一个优秀的 O ( log p ) O(\log p) 的求解奇质数二次剩余的方法了。


寻找二次非剩余:

由于前文已经叙述了,由于有 t 2 ( t ) 2 ( m o d   p ) t^2\equiv (-t)^2(mod\text{ }p) ,所以二次剩余的数量不会超过 O ( p 2 ) O(\frac{p}2) ,我们随机出来一个数就有将近 1 / 2 1/2 的概率是二次非剩余,所以这个直接用随机的做法就行了。

参考题目:Timus1132

2.模数为 p k p^k ,其中 p p 是奇质数

首先仍然要判断解是否存在


解的存在性

进行解的存在性判断稍微麻烦了一些

设: a = p c m a=p^cm p m p\nmid m

c k c\ge k ,免谈,直接返回0。

c < k c < k ,有解多了一个前提条件: c % 2 = 0 c\%2=0

必要性证明:

设: x 0 2 a ( m o d   p k ) x_0^2\equiv a(mod\text{ }p^k)
x 0 = p t n , n % p ̸ = 0 x_0=p^tn,n\%p\not=0

所以 x 0 2 = p 2 t n 2 x_0^2=p^{2t}n^2

2 t < k 2t < k ,有如下推论: ( p 2 t s )   %   p k = p 2 t ( s   %   p k 2 t ) (p^{2t}s)\text{ }\%\text{ }p^k=p^{2t}(s\text{ }\%\text{ }p^{k-2t})

所以 p 2 t a p^{2t}|a ,同时我们也可以这样将原方程化为 x 0 2 a / p c ( m o d p k c ) x_0^2\equiv a/p^c (mod p^{k-c})

当新方程有解时,原方程也有解,将上面欧拉定则里面推理用的 p 1 p-1 换成 ϕ ( p k c ) \phi(p^{k-c}) 就行了。

最后解为 x = x 0 × p c 2 x=x_0\times p^{\frac{c}2}

所以接下来只讨论 p a p\nmid a 的情况。


O ( log 2 p ) O(\log^2 p) 的解法:

与第一种情况一样,只需要将 p 1 p-1 换成 ϕ ( p k ) = ( p 1 ) p k 1 \phi(p^k)=(p-1)p^{k-1} 就行了。

O ( log p ) O(\log p) 的解法:

现在求解方程 x 2 a ( m o d   p k ) x^2\equiv a(mod\text{ }p^k)

其中 p a p\nmid a

先解出 r 2 a ( m o d   p ) r^2\equiv a(mod\text{ }p)

那么有 ( r 2 a ) = k p ( r 2 a ) k 0 ( m o d   p k ) (r^2-a)=kp\Rightarrow (r^2-a)^k\equiv 0(mod\text{ }p^k)

( r 2 a ) k t 2 u 2 a ( m o d   p k ) (r^2-a)^k\equiv t^2-u^2a(mod\text{ }p^k)

我们有 ( r a ) k = t u a ( r + a ) k = t + u a (r-\sqrt a)^k=t-ua \\ (r+\sqrt a)^k=t+ua

这个运算仍然在扩域后进行。

最终我们有 t 2 u 2 a ( m o d   p k ) t^2\equiv u^2a(mod\text{ }p^k)

解出来的方程就是 t 2 u 2 a ( m o d   p k ) t^2u^{-2}\equiv a(mod\text{ }p^k)

能够证明 g c d ( t , p ) = g c d ( u , p ) = 1 gcd(t,p)=gcd(u,p)=1

所以逆元用扩展欧几里得求一下就行了。

3.模数为 2 k 2^k

解的存在性

处理幂的方法与上面这种情况差不多,我们效仿上面先化成 x 2 a ( m o d 2 k ) , 2 a x^2\equiv a \pmod{2^k},2\nmid a

那么现在呢,没有欧拉准则了啊。

从特殊情况谈起,先打一个表,把那些有解的 a a 找出来

k 有解的a
1 1
2 1
3 1
4 1,9
5 1,9,17,25
6 1,9,17,25,33,41,49,57

似乎当且仅当 a 1 ( m o d 8 ) a\equiv1\pmod{8} 的时候有解啊。。。

实际上,我们有如下的蕴含关系: a 1 ( m o d 8 ) x , x 2 a ( m o d 2 k ) a\equiv1\pmod{8}\Leftrightarrow \exist x,x^2\equiv a\pmod{2^k}

必要性:

由于存在解 x 0 , x 0 2 a ( m o d 2 k ) x_0,x_0^2\equiv a\pmod{2^k}

由于 g c d ( a , 2 ) = 1 gcd(a,2)=1 ,所以 g c d ( x 0 , 2 ) = 1 gcd(x_0,2)=1 ,不妨设 x 0 = 2 t + 1 x_0=2t+1

所以 a x 0 2 ( 2 t + 1 ) 2 4 t ( t + 1 ) + 1 ( m o d 2 k ) a\equiv x_0^2\equiv (2t+1)^2\equiv 4t(t+1)+1\pmod{2^k}

显然 8 4 t ( t + 1 ) 8\mid 4t(t+1) ,所以 a 1 ( m o d 8 ) a\equiv 1\pmod8

充分性:

由下面叙述的求解方法易证
(只要说明总能算出解,就能说明总是存在解,就好像拿着鸡下的蛋证明鸡会下蛋一样)


O ( k ) O(k) 求解

一下内容学习自Miskcoo的博客,不过他的博客总是因为各种奇怪的原因打不开,链接我也找不到了,只有离线版本,所以我这里就照着他的思路来叙述求解方法

1. k 2 k\le2

特判。

2. k = 3 k=3

二次剩余方程 x 2 a ( m o d 2 3 ) x^2\equiv a\pmod {2^3} 有解,当且仅当 a 1 ( m o d 2 3 ) a\equiv 1\pmod{2^3} ,且本质不同的解有四个: ± 1 , ± 5 \pm1,\pm5

换句话说,我们可以将这个解记为 x = ± ( x 3 + t 3 × 2 2 ) , t 3 Z , x 3 = 1  or  5 x=\pm(x_3+t_3\times 2^2),t_3\in\mathbb Z,x_3=1\text{ or }5

3. k > 3 k > 3

假设我们已经知道方程 x 2 a ( m o d 2 q 1 ) x^2\equiv a\pmod{2^q-1}
的解,显然解可以表示成 x 0 = ± ( x q 1 + t q 1 × 2 q 2 ) , t q 1 Z x_0=\pm(x_{q-1}+t_{q-1}\times 2^{q-2}),t_{q-1}\in \mathbb Z

考虑如何推导出 x q x_q t q t_q

为了方便,后面记 a i = a % 2 i a_i=a\% 2^i

对于一个 x 2 a ( m o d 2 q 1 ) x^2\equiv a\pmod{2^{q-1}} x q 1 x_{q-1} 来说,在 % 2 q \%2^q 意义下,只可能有: x q 1 2 a q 1 ( m o d 2 q ) x q 1 2 a q 1 + 2 q 1 ( m o d 2 q ) \begin{aligned} &x_{q-1}^2\equiv a_{q-1} &\pmod{2^q} \\ 或是&x_{q-1}^2\equiv a_{q-1}+2^{q-1}&\pmod{2^q} \end{aligned}

所以我们就要求出合适的 t q 1 t_{q-1} 的值,先代入方程 x 2 a ( m o d 2 q ) x^2\equiv a\pmod {2^q}
( x q 1 + 2 q 2 × t q 1 ) 2 a q ( m o d 2 q ) x q 1 2 + 2 q 1 t q 1 a q ( m o d 2 q ) t q 1 a q x q 1 2 2 q 1 ( m o d 2 ) \begin{aligned} (x_{q-1}+2^{q-2}\times t_{q-1})^2 & \equiv a_q &\pmod{2^q} \\ x_{q-1}^2+2^{q-1}t_{q-1}&\equiv a_q &\pmod{2^q} \\ t_{q-1}& \equiv \frac{a_q-x_{q-1}^2}{2^{q-1}} &\pmod{2} \end{aligned}

所以满足要求的 t q 1 = a q x q 1 2 2 q 1 + 2 × t q , t q Z t_{q-1}=\frac{a_q-x_{q-1}^2}{2^{q-1}}+2\times t_q,t_q\in \mathbb{Z}

回到方程 x 2 a ( m o d 2 q ) x_2\equiv a \pmod{2^q} 它的解就是 x = ± ( x q 1 + a q x q 1 2 2 + 2 k 1 × t k ) , t k Z x=\pm(x_{q-1}+\frac{a_q-x_{q-1}^2}{2}+2^{k-1}\times t_k),t_k\in\mathbb{Z}

q = 3 q=3 的情况开始一路递推即可。

4.模数任意

考虑唯一分解 p = i = 1 t p i k i p=\prod_{i=1}^{t}p_i^{k_i}

那么我们只需要求解 t t 个二次剩余方程:
{ x 1 2 a ( m o d   p 1 k 1 ) x 2 2 a ( m o d   p 2 k 2 ) x t 2 a ( m o d   p t k t ) \left\{ \begin{aligned} &x_1^2\equiv a &&(mod\text{ }p_1^{k_1}) \\ &x_2^2\equiv a &&(mod\text{ }p_2^{k_2}) \\ &…… \\ &x_t^2\equiv a && (mod\text{ }p_t^{k_t}) \end{aligned} \right.

然后用CRT合并一下就行了
{ x x 1 ( m o d   p 1 k 1 ) x x 2 ( m o d   p 2 k 2 ) x x t ( m o d   p t k t ) \left\{ \begin{aligned} &x\equiv x_1 &&(mod\text{ }p_1^{k_1}) \\ &x\equiv x_2 &&(mod\text{ }p_2^{k_2}) \\ &…… \\ &x\equiv x_t && (mod\text{ }p_t^{k_t}) \end{aligned} \right.

猜你喜欢

转载自blog.csdn.net/zxyoi_dreamer/article/details/85195819