二次剩余学习小记

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


概念

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


勒让德符号

\[\left(\frac{n}{p}\right)= \begin{cases} 1,&n\text{在模$p$意义下是二次剩余}\\ -1,&n\text{在模$p$意义下是非二次剩余}\\ 0,&n\equiv0\pmod p \end{cases}\]

这个东西可以用个很方便的东西求出来:

\[\left(\frac{n}{p}\right)\equiv n^{\frac{p-1}{2}} \pmod 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\)
二项式展开完事。


\[\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\]

证毕……
既然它可以推出来,那就可以简单地认为它虚部在计算的过程中会消去……

posted @ 2020-04-28 20:04  jz_597  阅读(192)  评论(0编辑  收藏  举报