二次同余方程(二次剩余)

article/2025/10/29 13:46:58


一、介绍

1.定义

当存在某个 x x x,可以使得式子 x 2 ≡ n ( m o d x^2≡n(mod x2n(mod p ) p) p)成立时,称“n是模p的二次剩余”;
当对任意x不成立时,称“n是模 p的二次非剩余”。

例如,满足模11的二次剩余的数有: 1 , 3 , 4 , 5 , 6 1,3,4,5,6 1,3,4,5,6
模11二次非剩余的数有: 2 , 6 , 7 , 8 , 10 2,6,7,8,10 2,6,7,8,10

至于 0 0 0,即不是二次剩余也不是二次非剩余。

2.定理

对于方程 x 2 ≡ n ( m o d x^2≡n(mod x2n(mod p ) p) p),如果 p p p是一个奇质数(即 p p p为大于2的质数),那么在集合 { 1 , 2 , … , p − 1 } \{1,2,…,p-1\} {1,2,,p1}中,有 p − 1 2 \frac{p-1}{2} 2p1个数满足模 p p p的二次剩余,剩下的 p − 1 2 \frac{p-1}{2} 2p1个数为模 p p p的二次非剩余。

证明:

第一步:对于任何一个整数 X X X来说, X 2 % p X^2\%p X2%p都可以写为: x 2 % p ( x ∈ { 1 , 2 , … , p − 1 } ) x^2\%p(x \in \{1,2,…,p-1 \}) x2%p(x{1,2,,p1})

X = k ∗ p + x X=k*p+x X=kp+x
X 2 % p = ( k ∗ p + x ) 2 % p ⇒ x 2 % p X^2\%p=(k*p+x)^2\%p\Rightarrow x^2\%p X2%p=(kp+x)2%px2%p

第二步:证明 x 2 x^2 x2 ( p − x ) 2 (p-x)^2 (px)2在模 p p p条件下同余

( p − x ) 2 (p-x)^2 (px)2进行展开得到 ( p 2 − 2 p x + x 2 ) (p^2-2px+x^2) (p22px+x2),再对 p p p取模,得到 x 2 x^2 x2
证毕。

第三步:证明在 { 1 , 2 , … , p − 1 2 } \{1,2,…,\frac{p-1}{2} \} {1,2,,2p1}中,不同的 x x x所对应 x 2 x^2 x2对p取模的结果不同
反证法:若存在不同的 x x x y y y处于集合中,且 x 2 ≡ y 2 ( m o d x^2≡y^2(mod x2y2(mod p ) p) p)
那么就推出 p ∣ ( x 2 − y 2 ) ⇒ p ∣ ( x − y ) ( x + y ) p|(x^2-y^2)\Rightarrow p|(x-y)(x+y) p(x2y2)p(xy)(x+y)

由于 ( x + y ) < p (x+y)<p (x+y)<p,这个式子成立的唯一可能就是 x = = y x==y x==y,与条件相矛盾。
证毕。

由上方的三个证明可以得知,前 p − 1 2 \frac{p-1}{2} 2p1个数对应 x 2 x^2 x2对p取模的结果与后 p − 1 2 \frac{p-1}{2} 2p1个数相同,而且,前 p − 1 2 \frac{p-1}{2} 2p1个数对应 x 2 x^2 x2对p取模的结果各自不同,说明集合 { 1 , 2 , … , p − 1 } ) \{1,2,…,p-1 \}) {1,2,,p1})对应的 x 2 x^2 x2对p取模的结果有 p − 1 2 \frac{p-1}{2} 2p1个,再结合证明一,进行推广,所有整数对应的 x 2 x^2 x2对p取模的结果有 p − 1 2 \frac{p-1}{2} 2p1

也就是在集合 { 1 , 2 , … , p − 1 } \{1,2,…,p-1\} {1,2,,p1}中,有 p − 1 2 \frac{p-1}{2} 2p1个数满足模 p p p的二次剩余,剩下的 p − 1 2 \frac{p-1}{2} 2p1个数为模 p p p的二次非剩余。


二、判别

1.勒让德符号(Legendre Symbol)

如果 p p p是一个奇质数, a a a是一个整数,可以使用 ( a p ) (\frac{a}{p}) (pa)来表示 a a a是否为模 p p p二次剩余,或者是既不是二次剩余,也不是二次非剩余。
在这里插入图片描述

2.欧拉判别准则(Euler’s criterion)

(1)内容

如果 p p p是一个奇质数, a a a是一个整数此时存在等式:
( a p ) = a p − 1 2 ( m o d (\frac{a}{p})=a^{\frac{p-1}{2}}(mod (pa)=a2p1(mod p ) p) p)

(2)证明

1. 若 ( a p ) = 0 (\frac{a}{p})=0 (pa)=0
a = k p ⇒ a p − 1 2 = ( k p ) p − 1 2 a=kp\Rightarrow a^{\frac{p-1}{2}}=(kp)^{\frac{p-1}{2}} a=kpa2p1=(kp)2p1
( k p ) p − 1 2 ≡ 0 ( m o d (kp)^{\frac{p-1}{2}}≡0(mod (kp)2p10(mod p ) p) p)
所以此时 a p − 1 2 = 0 = ( a p ) a^{\frac{p-1}{2}}=0=(\frac{a}{p}) a2p1=0=(pa)

2. 若 ( a p ) = 1 (\frac{a}{p})=1 (pa)=1
a a a x 2 x^2 x2同余,而且 x ∈ { 1 , 2 , … , p − 1 } x\in\{1,2,…,p-1\} x{1,2,,p1},
由于 x x x p p p互质,根据费马小定理,可知:
x p − 1 ≡ 1 ( m o d x^{p-1}≡1(mod xp11(mod p ) p) p)
⇒ ( x 2 ) p − 1 2 ≡ 1 ( m o d \Rightarrow (x^2)^{\frac{p-1}{2}}≡1(mod (x2)2p11(mod p ) = ( a p ) p)=(\frac{a}{p}) p)=(pa)

3. 若 ( a p ) = − 1 (\frac{a}{p})=-1 (pa)=1
此时 a a a i ∗ j i*j ij同余,且 i ≠ j , i 、 j ∈ { 1 , 2 , … , p − 1 } i\neq j,i、j\in\{1,2,…,p-1\} i=jij{1,2,,p1}
i ∗ j ≡ a ( m o d i*j≡a(mod ija(mod p ) p) p)
⇒ i ≡ a ∗ j − 1 ( m o d \Rightarrow i≡a*j^{-1}(mod iaj1(mod p ) p) p)

第一步证明不同的 i i i所对应的 j j j是不同的。

反证法:若存在 由 于 I ≡ a ∗ j − 1 ( m o d 由于I≡a*j^{-1}(mod Iaj1(mod p ) p) p) i ≡ a ∗ j − 1 ( m o d i≡a*j^{-1}(mod iaj1(mod p ) p) p)
则可以写为: I − i = k p I-i=kp Ii=kp
由于 i 、 I ∈ { 1 , 2 , … , p − 1 } i、I\in\{1,2,…,p-1\} iI{1,2,,p1}
唯有 i = = I i==I i==I时,才会成立,产生矛盾。
证毕。

第二步证明 a p − 1 2 = ( p − 1 ) ! a^{\frac{p-1}{2}}=(p-1)! a2p1=(p1)!

可以将集合 { 1 , 2 , … , p − 1 } \{1,2,…,p-1\} {1,2,,p1}内的 p − 1 p-1 p1个数分为 p − 1 2 \frac{p-1}{2} 2p1组,每组里面的两个数的积与 a a a同余,所以 ( p − 1 ) ! (p-1)! (p1)! a p − 1 2 a^{\frac{p-1}{2}} a2p1.

根据威尔逊定理:p 是质数的充要条件为 ( p − 1 ) ! ≡ − 1 ( m o d (p−1)! ≡ −1 (mod (p1)!1(mod p ) p) p)
此时可以得到: a p − 1 2 = ( p − 1 ) ! ≡ − 1 ( m o d a^{\frac{p-1}{2}}=(p-1)!≡ −1 (mod a2p1=(p1)!1(mod p ) p) p)

(3)注意

以算法实现时,直接计算 a p − 1 2 a^{\frac{p-1}{2}} a2p1 p p p的结果将得到 p − 1 p-1 p1,所以也可以表示为:
a p − 1 2 % p = { 1 ( a p ) = 1 p − 1 ( a p ) = − 1 0 ( a p ) = 0 a^{\frac{p-1}{2}}\%p=\begin{cases} 1 & (\frac{a}{p})=1\\ p-1 & (\frac{a}{p})=-1 \\ 0 & (\frac{a}{p})=0 \\ \end{cases} a2p1%p=1p10(pa)=1(pa)=1(pa)=0

三、 x 2 ≡ n ( m o d x^2≡n(mod x2n(mod p ) p) p)——奇波拉算法(Cipolla’s algorithm)

求解方程 x 2 ≡ n ( m o d x^2≡n(mod x2n(mod p ) p) p)

1.操作

(1)先利用欧拉判别准则判断 n n n是否满足对模 p p p二次剩余,若满足进行下一操作,若不满足,则结束。

(2) 通过随机试错的方法从集合 { 0 , 1 , 2 , . . . , p − 1 } \{0,1,2,...,p-1\} {0,1,2,...,p1}中找到一个 a a a,且 a 2 − n a^2-n a2n满足模 p p p的二次非剩余,即 ( a 2 − n p ) = = − 1 (\frac{a^2-n}{p})==-1 (pa2n)==1

(3) x = ( a + a 2 − n ) p + 1 2 x=(a+\sqrt{a^2-n})^{\frac{p+1}{2}} x=(a+a2n )2p+1就是一个解,由于 x 2 x^2 x2 ( p − x ) 2 (p-x)^2 (px)2同余,所以还有第二个解 ( p − x ) (p-x) (px)

2.证明 x = ( a + a 2 − n ) p + 1 2 x=(a+\sqrt{a^2-n})^{\frac{p+1}{2}} x=(a+a2n )2p+1为解

大佬的证明
在这里插入图片描述
重点在于将上方的定理推导到复数域中。
在这里插入图片描述
在这里插入图片描述


四、模板题

代码

#include<bits/stdc++.h> 
using namespace std;
typedef long long LL;LL quick_mod(LL a, LL b, LL m)
{LL ans = 1;a %= m;while(b){if(b & 1){ans = ans * a % m;b--;}b >>= 1;a = a * a % m;}return ans;
}struct T
{LL p, d;
};LL w;//二次域乘法
T multi_er(T a, T b, LL m)
{T ans;ans.p = (a.p * b.p % m + a.d * b.d % m * w % m) % m;ans.d = (a.p * b.d % m + a.d * b.p % m) % m;return ans;
}//二次域上快速幂
T power(T a, LL b, LL m)
{T ans;ans.p = 1;ans.d = 0;while(b){if(b & 1){ans = multi_er(ans, a, m);b--;}b >>= 1;a = multi_er(a, a, m);}return ans;
}//求勒让德符号
LL Legendre(LL a, LL p)
{return quick_mod(a, (p-1)>>1, p);
}LL mod(LL a, LL m){a %= m;if(a < 0) a += m;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(true){a = rand() % p;t = a * a - n;w = mod(t, p);if(Legendre(w, p) + 1 == p) break;}T tmp;tmp.p = a;tmp.d = 1;T ans = power(tmp, (p + 1)>>1, p);return ans.p;
}int main(){int t;cin>>t;while(t--){int n, p;cin>>n>>p;n%=p;int a = Solve(n, p);if(a == -1){cout<<"Hola!"<<endl; continue;}int b = p - a;if(a > b) swap(a, b);if(a == b)cout<<a<<endl;elsecout<<a<<" "<<b<<endl;}return 0;
}

五、 x 2 ≡ n ( m o d x^2≡n(mod x2n(mod p k ) p^k) pk)(gcd(x,p)=1,p为奇质数)

先解同余式 x 2 ≡ n ( m o d x^2≡n(mod x2n(mod p ) p) p)

设解为 r r r,即 r 2 ≡ n ( m o d r^2≡n(mod r2n(mod p ) p) p)
转化可得: r 2 − n = m p r^2-n=mp r2n=mp ⇒ ( r 2 − n ) k = ( m p ) k \Rightarrow (r^2-n)^k=(mp)^k (r2n)k=(mp)k

w w w表示 n \sqrt{n} n

上式就变为了 ( r + w ) k ( r − w ) k = ( m p ) k (r+w)^k(r-w)^k=(mp)^k (r+w)k(rw)k=(mp)k

进行二项式展开,
( r + w ) k = C k 0 r k + C k 1 r k − 1 w . . . + C k k − 1 r w k − 1 + C k k w k ⇒ t + u ∗ w (r+w)^k=C_k^0r^k+C_k^1r^{k-1}w...+C_k^{k-1}rw^{k-1}+C_k^kw^k\Rightarrow t+u*w (r+w)k=Ck0rk+Ck1rk1w...+Ckk1rwk1+Ckkwkt+uw
( r − w ) k = C k 0 r k + C k 1 r k − 1 ( − w ) . . . + C k k − 1 r ( − w ) k − 1 + C k k ( − w ) k ⇒ t − u ∗ w (r-w)^k=C_k^0r^k+C_k^1r^{k-1}(-w)...+C_k^{k-1}r(-w)^{k-1}+C_k^k(-w)^k\Rightarrow t-u*w (rw)k=Ck0rk+Ck1rk1(w)...+Ckk1r(w)k1+Ckk(w)ktuw

仅当 ( − w ) (-w) (w)的次数为偶次时才会作用于 t t t,此时负号相抵消,故两式能够构成一个平方差的形式。

上式就变为了 t 2 − u 2 ∗ n = ( m p ) k t^2-u^2*n=(mp)^k t2u2n=(mp)k
t 2 − u 2 ∗ n ≡ 0 ( m o d t^2-u^2*n≡0(mod t2u2n0(mod p k ) p^k) pk)

处理得 t 2 ≡ u 2 n ( m o d t^2≡u^2n(mod t2u2n(mod p ) p) p)

通过二项式展开的式子,有 g c d ( p , u ) = = 1 gcd(p,u)==1 gcd(p,u)==1(暂未证明,待补充)

通过消去律,可以得到: t 2 ( u − 1 ) 2 ≡ n ( m o d t^2(u^{-1})^2≡n(mod t2(u1)2n(mod p ) p) p)
通过求逆元的方法可以求出 u − 1 u^{-1} u1

此时得出了第一个解 x = t ∗ i n v ( u ) ( m o d x=t*inv(u)(mod x=tinv(u)(mod p k ) p^k) pk)
再根据之前的同余关系 x 2 ≡ ( p − x ) 2 ( m o d x^2≡(p-x)^2(mod x2(px)2(mod p ) p) p)
所以还有第二个解 ( p k − t ∗ i n v ( u ) ) ( m o d (p^k-t*inv(u))(mod (pktinv(u))(mod p k ) p^k) pk)

例:求方程 x 2 ≡ 13 ( m o d x^2≡13(mod x213(mod 27 ) 27) 27)的解

可以求出 t = 40 , u = 16 , i n v ( u ) = 22 t=40,u=16,inv(u)=22 t=40,u=16,inv(u)=22
所以第一个解为 t ∗ i n v ( u ) = ( 40 ∗ 22 ) % 27 = 16 t*inv(u)=(40*22)\%27=16 tinv(u)=(4022)%27=16
第二个解就是 p k − x = 27 − 16 = 11 p^k-x=27-16=11 pkx=2716=11

为了方便理解,也可以写为 x ≡ ± 11 ( m o d x≡\pm11(mod x±11(mod 27 ) 27) 27)



http://chatgpt.dhexx.cn/article/c4g0377r.shtml

相关文章

二次剩余 数论 勒让德

在数论中&#xff0c;特别在同余理论里&#xff0c;一个整数对另一个整数的二次剩余&#xff08;英语&#xff1a;Quadratic residue&#xff09;指的平方除以得到的余数。 当存在某个&#xff0c;式子成立时&#xff0c;称“是模的二次剩余” 当对任意&#xff0c;不成立时&…

二次剩余

title: 二次剩余 date: 2019-08-27 00:10:46 tags: 数论 一、定义&#xff08;Quadratic_residue&#xff09; 一个整数X对另一个整数p的二次剩余 d 注意这边的取模是 X 2 X^2 X2 和 d 都要对p取模噢 eg. 3 2 ≡ 2 ( m o d 7 ) 3^2≡2 (mod\ 7) 32≡2(mod 7),我们称 2是7的…

win10增加美式键盘

仅为做记录 我的系统为win10专业版 1809 首先进入语言首选项 选择添加语言 选择英语&#xff08;美国&#xff09; 之后选择拼写、键入和键盘设置 在输入的最下面选择高级键盘设置 选择语言栏选项 更改按键顺序选项中可以修改切换语言的快捷键 本质上是切换语言种类而不是输…

删除Win10英语国际键盘的方法

按下winR打开运行&#xff0c;键入regedit点击确定打开注册表 在注册表中依次展开&#xff1a;HKEY_CURRENT_USER\Keyboard Layout\Preload 改成下面的样子&#xff1a; 这个表示默认输入法是英语-美式键盘&#xff0c;接下来是中文-美式键盘。 注1&#xff1a;可以右键创…

win10添加美式键盘_戴尔笔记本win10降win7教程

现在大多数人电脑操作系统都是win10&#xff0c;但是很多人由于各种原因&#xff0c;比如部分软件限制&#xff0c;还是不得不继续使用win7操作系统&#xff0c;有些朋友自己安装win7的时候会发现各种问题&#xff0c;始终安装不上&#xff0c;接下来我整理下win10降win7的办法…

超详细window10添加美式键盘

转自https://blog.csdn.net/qq_41139830/article/details/80500841 打开控制面板->添加语言 然后点击图中的添加语言 选择英语 选择英语(美国) 然后回到下图这个界面&#xff0c;就会发现多出了美式键盘 &#xff08;如果美式键盘在上面&#xff0c;就要将其下移&#xff0…

win10切换输入法快捷键_软件快捷键失灵,可能是你没有安装美式键盘

工程类用到的软件&#xff0c;比如Altium designer、keil、ccs、Quartus ii等基本都是老外开发的&#xff0c;他们的工作的键盘模式都是美式键盘&#xff0c;快捷键也相应的是美式键盘下的快捷键&#xff0c;这就导致我们自己在使用这些软件时&#xff0c;要注意选择键盘类型&a…

Win10怎么设置默认输入法为美式英文键盘

默认的输入法就是进入系统后一打字就是你想要的那一种输入法。WIN10的默认输入法是微软拼音输入法&#xff0c;它是一个中文的输入法&#xff0c;用起来不是很方便。 相对来说&#xff0c;大部分人都是习惯输入法默认的状态是英文的。这样可以在输入网址&#xff0c;或是在码字…

win10添加美式键盘_在win10中使用多种键盘布局,你知道如何操作吗

Windows10操作系统允许用户使用多种键盘布局&#xff0c;用户可以在初始设置过程中添加一个或多个键盘布局(也称为“开箱即用”体验(OOBE))。但是&#xff0c;如果你配置了错误的布局&#xff0c;或者以后需要键入不同的语言&#xff0c;则可以随时添加和更改键盘配置。 一般情…

Win10添加美式键盘

为什么80%的码农都做不了架构师&#xff1f;>>> WIN8也可以这实现&#xff01; ###在“中文”内添加美式键盘需要修改注册表。 打开CMD&#xff0c;输入 regedit 打开注册表编辑器&#xff1b; 转到 HKEY_CURRENT_USER/Keyboard Layout/Substitutes&#xff0c; 新…

win10添加美式键盘_WIN10系统必做的6个优化,优化完电脑性能飙升。

现在越来越多的人开始用WIN10系统了&#xff0c;而对于习惯了使用WIN7系统的用户来说&#xff0c;刚刚开始接触WIN10系统&#xff0c;确实会有点不适应&#xff0c;特别是使用过程中一会儿弹出一个对话框&#xff0c;一会儿一个什么通知的&#xff0c;不厌其烦&#xff0c;接下…

win10添加美式键盘_Win10自带的这6款软件,90%的人都不知道,但个个都好用到爆!...

什么&#xff0c;微软还出过我不知道的软件&#xff1f; 你别不信&#xff0c;这篇文章三顿就要给大家分享6个微软官方出品的软件神器&#xff0c;而且全都无需安装无需下载&#xff0c;它们就藏在你的操作系统里&#xff0c;一起来看看吧&#xff01; 微软拼音输入法 一说到输…

win10添加美式键盘_Windows10添加中文美式键盘,传统语言栏,采用ctrl+shift切换输入法...

Windows10添加中文美式键盘&#xff0c;采用ctrlshift切换输入法 用XP和Windows 7习惯后 用Windows 10 发现切换输入法快捷键变了&#xff0c;变成Windows键空格&#xff0c;现在觉得不适应&#xff0c;遂改回来。 而且还有一个很蛋疼的问题&#xff0c;这个在Windows8时代就有…

WIn11多出美式键盘如何删除

一、操作步骤 1.进入设置页 右键点击左边底部的输入法处&#xff0c;点击更多键盘设置 2.进入语言和区域添加语言 进入到如图所示页面&#xff0c;点击添加语言 添加语言后才可以删除键盘 3.安装英语(美国)语言 搜索到以后点击下一步&#xff0c;可以不选手写等功能安装&…

如何彻底删除windows10自带的美式键盘

1.先左键点击右下角的输入法&#xff0c;然后在点击语言首选项 2.进入语言设置&#xff0c;选择添加语言 3.在搜索框中输入english&#xff0c;下拉滚动条选择 英语&#xff08;美国&#xff09;English(United States)选项&#xff0c;然后点击下一页 4.只选择安装语言包即…

win10解决已禁用输入法和隐藏中文简体美式键盘

环境 win10 21h1 win10解决已禁用输入法 设置->时间和语言->语言->拼写、键入和键盘设置->高级键盘设置隐藏中文简体美式键盘 reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\CTF\HiddenDummyLayouts /v 00000804 /t REG_SZ /d 00000804参考文章 https://soci…

有效删除Win10英语(美式键盘)输入法

原文转载自百度经验&#xff0c;作者ID砸牛顿的苹果&#xff0c;原文链接https://jingyan.baidu.com/article/e4511cf39d7c382b855eaf62.html。 1.进入语言选项以后&#xff0c;默认英文键盘是无法删除的。我们需要添加一个英文语言包才可以删除&#xff0c;点击添加语言。 2…

计算机怎样设置默认美式键盘,完美:如何在win10系统中将默认输入法设置为美式键盘...

我相信朋友在操作计算机系统时会遇到很多问题. 将win10系统的默认输入法设置为美式键盘非常普遍. 我的朋友和我的朋友已经遇到了win10系统. 将美式键盘的默认输入法设置很多次&#xff0c;因此&#xff0c;我编写了一个更简单的设置教程&#xff0c;用于在win10系统中将美式键盘…

计算机考试怎样删除美式键盘,Win10怎么把美式键盘删除_Win10彻底删除eng美式键盘?-192路由网...

问&#xff1a;Win10怎么把美式键盘彻底删除掉&#xff1f;我想把Win10系统自带的美式键盘输入法删除掉&#xff0c;应该怎么操作&#xff1f; 因为用不到Win10自带的美式键盘输入法&#xff0c;一般都是用搜狗输入法输入中文的嘛&#xff0c;这个输入英文的输入法根本就用不到…

win10添加美式键盘_给windows10添加新的键盘布局,这样操作就对了

Windows10操作系统允许用户使用多种键盘布局,用户可以在初始设置过程中添加一个或多个键盘布局(也称为“开箱即用”体验(OOBE))。但是,如果你配置了错误的布局,或者以后需要键入不同的语言,则可以随时添加和更改键盘配置。 一般情况下,用户不用更改输入设置。但是,如果需…