二次剩余学习小记
Posted jz-597
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二次剩余学习小记相关的知识,希望对你有一定的参考价值。
这个其实很早之前就想写了,只不过一直没有时间。
之前稍微学了一下,但由于没有留下深刻的印象,所以学了等于白学。
SCOI2018有一道题就是裸的二次剩余题,比赛时做不出来真是气炸了。
概念
如果(p)为奇素数。
(n)在模(p)意义下能被开方,就称(n)是模(p)意义下的二次剩余。
即存在(x^2equiv 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^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)
二项式展开完事。
证毕……
既然它可以推出来,那就可以简单地认为它虚部在计算的过程中会消去……
以上是关于二次剩余学习小记的主要内容,如果未能解决你的问题,请参考以下文章