二次剩余学习小记
这个其实很早之前就想写了,只不过一直没有时间。
之前稍微学了一下,但由于没有留下深刻的印象,所以学了等于白学。
SCOI2018有一道题就是裸的二次剩余题,比赛时做不出来真是气炸了。
概念
如果\(p\)为奇素数。
\(n\)在模\(p\)意义下能被开方,就称\(n\)是模\(p\)意义下的二次剩余。
即存在\(x^2\equiv n (mod \ p)\)
勒让德符号
这个东西可以用个很方便的东西求出来:
证明:如果\(n\)是模\(p\)意义下的二次剩余,即存在\(x^2 \equiv n \pmod p\)
那么就有\(n^{\frac{p-1}{2}}\equiv x^{p-1}\equiv 1 \pmod p\)
Cipolla算法
接下来的问题是如何解这个方程。
可以用BSGS算法艹过去。
但是这里有个更加高级的叫Cipolla算法。
前置技能
定理一
\(n^2\equiv (p-n)^2 \pmod p\)
证明略。
定理二
\(p\)的二次剩余个数只有\(\frac{p-1}{2}\)个
考虑假如有两个不同的数\(x\)和\(y\)满足\(x^2\equiv y^2 \pmod p\)
则\(p|(x+y)(x-y)\)
所以\(x+y\equiv p\)
所以说,每个满足\(x\equiv y \pmod p\)的\(x\)和\(y\),它们的平方是相同的。
得证。
具体算法
假如要对\(n\)开方(保证其为模\(p\)意义下的二次剩余)
随机一个\(a\)使得\(a^2-n\)是非二次剩余(期望次数两次)
令\(\omega^2\equiv a^2-n \pmod p\)
计算\((a+\omega)^{\frac{p+1}{2}}\)作为其中达到一个解,另一个解通过定理一求出。
\(\omega\)看起来是无解的,但可以像对待虚数的\(i\)一样对待它。
计算的时候把它当负复数计算,算完之后就会惊奇地发现虚数部分消失了。
证明
定理三
\(\omega^p\equiv -\omega \pmod p\)
证明:\(\omega^p\equiv \omega^{p-1}\omega \equiv(a^2-n)^{\frac{p-1}{2}}\omega\equiv -\omega \pmod p\)
定理四
\((a+b)^p\equiv a^p+b^p \pmod p\)
二项式展开完事。
证毕……
既然它可以推出来,那就可以简单地认为它虚部在计算的过程中会消去……