二次剩余学习小记

Posted jz-597

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二次剩余学习小记相关的知识,希望对你有一定的参考价值。

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


概念

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


勒让德符号

[left(frac{n}{p} ight)= egin{cases} 1,&n ext{在模$p$意义下是二次剩余}-1,&n ext{在模$p$意义下是非二次剩余},&nequiv0pmod p end{cases}]

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

[left(frac{n}{p} ight)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^2equiv (p-n)^2 pmod p)
证明略。

定理二

(p)的二次剩余个数只有(frac{p-1}{2})
考虑假如有两个不同的数(x)(y)满足(x^2equiv y^2 pmod p)
(p|(x+y)(x-y))
所以(x+yequiv p)
所以说,每个满足(xequiv y pmod p)(x)(y),它们的平方是相同的。
得证。

具体算法

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

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

证明

定理三

(omega^pequiv -omega pmod p)

证明:(omega^pequiv omega^{p-1}omega equiv(a^2-n)^{frac{p-1}{2}}omegaequiv -omega pmod p)

定理四

((a+b)^pequiv a^p+b^p pmod p)
二项式展开完事。


[left((a+omega)^{frac{p+1}{2}} ight)^2 \equiv (a^p+omega^p)(a+omega) \equiv (a-omega)(a+omega) \equiv a^2-(a^2-n) \equiv n]

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

以上是关于二次剩余学习小记的主要内容,如果未能解决你的问题,请参考以下文章

二次剩余

二次剩余定理及Cipolla算法入门到自闭

二次剩余

二次剩余基础

二次剩余 Cipolla算法

二次剩余从csdn