二次剩余学习小记

这个其实很早之前就想写了,只不过一直没有时间。
之前稍微学了一下,但由于没有留下深刻的印象,所以学了等于白学。
SCOI2018有一道题就是裸的二次剩余题,比赛时做不出来真是气炸了。


概念

如果 p p p为奇素数。
n n n在模 p p p意义下能被开方,就称 n n n是模 p p p意义下的二次剩余。
即存在 x 2 ≡ n ( m o d   p ) x^2\equiv n (mod \ p) x2n(mod p)


勒让德符号

( n p ) = { 1 , n 在模 p 意义下是二次剩余 − 1 , n 在模 p 意义下是非二次剩余 0 , n ≡ 0 ( m o d p ) \left(\frac{n}{p}\right)= \begin{cases} 1,&n\text{在模$p$意义下是二次剩余}\\ -1,&n\text{在模$p$意义下是非二次剩余}\\ 0,&n\equiv0\pmod p \end{cases} (pn)=1,1,0,n在模p意义下是二次剩余n在模p意义下是非二次剩余n0(modp)
这个东西可以用个很方便的东西求出来:
( n p ) ≡ n p − 1 2 ( m o d p ) \left(\frac{n}{p}\right)\equiv n^{\frac{p-1}{2}} \pmod p (pn)n2p1(modp)
证明:如果 n n n是模 p p p意义下的二次剩余,即存在 x 2 ≡ n ( m o d p ) x^2 \equiv n \pmod p x2n(modp)
那么就有 n p − 1 2 ≡ x p − 1 ≡ 1 ( m o d p ) n^{\frac{p-1}{2}}\equiv x^{p-1}\equiv 1 \pmod p n2p1xp11(modp)


Cipolla算法

接下来的问题是如何解这个方程。
可以用BSGS算法艹过去。
但是这里有个更加高级的叫Cipolla算法。

前置技能

定理一

n 2 ≡ ( p − n ) 2 ( m o d p ) n^2\equiv (p-n)^2 \pmod p n2(pn)2(modp)
证明略。

定理二

p p p的二次剩余个数只有 p − 1 2 \frac{p-1}{2} 2p1
考虑假如有两个不同的数 x x x y y y满足 x 2 ≡ y 2 ( m o d p ) x^2\equiv y^2 \pmod p x2y2(modp)
p ∣ ( x + y ) ( x − y ) p|(x+y)(x-y) p(x+y)(xy)
所以 x + y ≡ p x+y\equiv p x+yp
所以说,每个满足 x ≡ y ( m o d p ) x\equiv y \pmod p xy(modp) x x x y y y,它们的平方是相同的。
得证。

具体算法

假如要对 n n n开方(保证其为模 p p p意义下的二次剩余)
随机一个 a a a使得 a 2 − n a^2-n a2n是非二次剩余(期望次数两次)
ω 2 ≡ a 2 − n ( m o d p ) \omega^2\equiv a^2-n \pmod p ω2a2n(modp)
计算 ( a + ω ) p + 1 2 (a+\omega)^{\frac{p+1}{2}} (a+ω)2p+1作为其中达到一个解,另一个解通过定理一求出。

ω \omega ω看起来是无解的,但可以像对待虚数的 i i i一样对待它。
计算的时候把它当负复数计算,算完之后就会惊奇地发现虚数部分消失了。

证明

定理三

ω p ≡ − ω ( m o d p ) \omega^p\equiv -\omega \pmod p ωpω(modp)

证明: ω p ≡ ω p − 1 ω ≡ ( a 2 − n ) p − 1 2 ω ≡ − ω ( m o d p ) \omega^p\equiv \omega^{p-1}\omega \equiv(a^2-n)^{\frac{p-1}{2}}\omega\equiv -\omega \pmod p ωpωp1ω(a2n)2p1ωω(modp)

定理四

( a + b ) p ≡ a p + b p ( m o d p ) (a+b)^p\equiv a^p+b^p \pmod p (a+b)pap+bp(modp)
二项式展开完事。


( ( a + ω ) p + 1 2 ) 2 ≡ ( a p + ω p ) ( a + ω ) ≡ ( a − ω ) ( a + ω ) ≡ a 2 − ( a 2 − n ) ≡ n \left((a+\omega)^{\frac{p+1}{2}}\right)^2 \\ \equiv (a^p+\omega^p)(a+\omega) \\ \equiv (a-\omega)(a+\omega) \\ \equiv a^2-(a^2-n) \\ \equiv n ((a+ω)2p+1)2(ap+ωp)(a+ω)(aω)(a+ω)a2(a2n)n
证毕……
既然它可以推出来,那就可以简单地认为它虚部在计算的过程中会消去……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值