二次同余

二次同余

今天来学习二次剩余。

背景

2018SCOI就考了这个。
然后我就被送退役了。
yy就切了然后拿了一本。

怎么判断是否有解

考虑我们知道n、p,要求x:x2≡n(Mod p)x^2{\equiv}n(Mod\ p)x2n(Mod p)
特判0的情况后:
(有解)=[np−12≡1](有解)=[n^{\frac{p-1}{2}}{\equiv}1]()=[n2p11]
如果np−12≡1(Mod p)n^{\frac{p-1}{2}}{\equiv}1 (Mod\ p)n2p11(Mod p),因为x2≡n(Mod p)x^2{\equiv}n(Mod\ p)x2n(Mod p),所以xp−1≡1(Mod p)x^{p-1}{\equiv}1(Mod \ p)xp11(Mod p)可行
否则可得xp−1≡−1(Mod p)x^{p-1}{\equiv}-1(Mod \ p)xp11(Mod p)显然不可行。

判断完有没有解该干啥

首先我们知道:对于任何一个符合x2≡n(Mod p)x^2{\equiv}n(Mod\ p)x2n(Mod p)的n,有+x、-x两解,那么有解无解的各占1/2。
然后我们随机生成一个数a,使得x2≡a2−n(Mod p)x^2{\equiv}a^2-n(Mod\ p)x2a2n(Mod p)无解(也就是(a2−n)p−12≡−1(a^2-n)^{\frac{p-1}{2}}{\equiv}-1(a2n)2p11),并且钦定一个w=a2−nw=\sqrt{a^2-n}w=a2n,让它与1构成一个复数域。
这个东西和复数性质相近,但是注意相乘时由虚数部相乘得到的合数部贡献要乘上a2−na^2-na2n(因为w2=a2−n2w^2={\sqrt{a^2-n}}^2w2=a2n2)
然后有结论:(a+w)p+12(a+w)^{\frac{p+1}{2}}(a+w)2p+1即为所求的x.
考虑这个东西的平方就是(a+w)p+1(a+w)^{p+1}(a+w)p+1
需要注意到(a+w)p=ap+wp(a+w)^{p}=a^p+w^p(a+w)p=ap+wp
由二项式定理得除了这两项以外全部都在组合数中含有一个p的因子,最后膜出来肯定是0.
又因为ap−1=1a^{p-1}=1ap1=1所以ap=aa^p=aap=a
同理wp−1=(w2)p−12=−1w^{p-1}=(w^2)^{\frac{p-1}{2}}=-1wp1=(w2)2p1=1
所以wp=−ww^p=-wwp=w
(a+w)p+1=(a+w)(ap+wp)(a+w)^{{p+1}}=(a+w)(a^p+w^p)(a+w)p+1=(a+w)(ap+wp)
=(a+w)(a−w)=(a+w)(a-w)=(a+w)(aw)
=a2−w2=a^2-w^2=a2w2
=a2−(a2−n)=a^2-(a^2-n)=a2(a2n)(flag回收)
=n=n=n
所以((a+w)p+12)2=n((a+w)^{\frac{p+1}{2}})^{2}=n((a+w)2p+1)2=n
至于为啥这个东西虚部为0?
结论别问。问就两行泪。
就酱。
upd

注意!!!!

千万不能现用现配平方根!!!!

不然一个是正的一个是负的就完蛋了!!!

### 关于信息安全中二次方程的数学基础 #### 一般二次式的定义 在数论和密码学领域,一般二次式是指形如 \( ax^2 + bx + c \equiv d \ (\text{mod}\ m) \)[^1] 的方程式。这里的关键在于理模运算下的二次多项式行为及其的存在性和数量。 对于特定形式的二次式 \( x^2 \equiv n\ (\text{mod}\ p) \),其中\(p\)是一个奇质数,该类问题的研究尤为重要。当考虑这样的方程是否有时,可以利用勒让德符号来辅助判断: \[ \left(\frac{n}{p}\right) = \begin{cases} 1, & \text{如果存在整数 } k,\ s.t.\ k^2 \equiv n\ (\text{mod}\ p), \\ -1, & \text{不存在上述条件成立的情况},\\ 0, & \text{若 } p|n. \end{cases} \] 这表明通过计算勒让德符号可以直接得知给定条件下是否存在满足要求的\(k\)值[^3]。 #### 的特点 值得注意的是,在求过程中发现,对于某些类型的二次方程而言,其根往往是成对出现的;即每当找到一个正整数\(r\)之后,另一个负整数则为\(p-r\)(假设工作范围限定在一个完整的剩系内)。这意味着实际操作中应当注意检查并补充可能遗漏掉的那个相反数[^2]。 #### 应用场景 这类理论不仅限于纯学术探讨,在现代信息技术安全体系里扮演着不可或缺的角色。例如,在公钥加密算法RSA的设计原理之中就隐含了大量有关大整数分难题背后所依托的小规模实例——这些正是基于相似性质构建起来的安全保障机制的一部分。 ```python def legendre_symbol(a, p): """Calculate the Legendre symbol (a/p).""" ls = pow(a, (p - 1) // 2, p) return -1 if ls == p - 1 else ls print(f"The Legendre Symbol of 5 mod 7 is {legendre_symbol(5, 7)}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值