干什么的
膜意义下开方。
抄了CMXRYNP大爷的笔记。
定义
对于一个奇质数 (p) ,定义它的二次剩余 (mathbf{F_{p^2}}) 为一个集合,其中每个数 (n) 满足 (exist xin[0,p),x^2equiv npmod{p}) 。
性质
二次剩余数量
(midmathbf{F_{p^2}mid}=frac{p+1}{2}) 。理由如下:
若 (u^2equiv v^2equiv npmod{p},u eq v) ,那么有 ((u-v)(u+v)equiv0 pmod{p}) 。显然只能是 (u+v=p) 。于是可以把 ((0,p)) 中的数分成 (frac{p-1}{2}) 组,每一组中的数的平方在模意义下都相同,不同组之间不同。加上 (0) 就是 (frac{p+1}{2}) 个。
欧拉准则
用来判定一个非零数是否是二次剩余。
若 (p) 是奇质数且 ((d,p)=1,d>0) ,则:
- (din mathbf{F_{p^2}}Leftrightarrow d^{frac{p-1}{2}}equiv 1pmod{p}) ;
- (d otin mathbf{F_{p^2}}Leftrightarrow d^{frac{p-1}{2}}equiv -1pmod{p}) 。
证明:首先有 (d^{p-1}-1=(d^{frac{p-1}{2}}-1)(d^{frac{p-1}{2}}+1)equiv 0pmod{p}) 。然后若 (exist x,x^2equiv dpmod{p}) ,那么就显然有 (d^{frac{p-1}{2}}equiv x^{p-1}pmod{p}) 。到这里能有 (din mathbf{F_{p^2}}Rightarrow d^{frac{p-1}{2}}equiv 1pmod{p}) 。
然后由拉格朗日定理得一个 (k) 次多项式在模意义下也最多只有 (k) 个根。因此只有 (frac{p-1}{2}) 个数满足 (d^{frac{p-1}{2}}-1equiv 0pmod{p}) 。又因为 (mid complement_mathbf{F_{p^2}}{0} mid=frac{p-1}{2}) ,因此以上两个推论都成立。
算法过程
- 随机一个 (t) ,满足 (t^2-n) 是非二次剩余。
- 令 (w=sqrt{t^2-n}) ,答案为 (xequiv(t+w)^{frac{p+1}{2}}pmod{p}) 。
以上过程中 (t+w) 可以看成一个模意义下的复数。(因为 (w) 在模意义下事实上不存在,就把它当作和 (i) 一样的虚数单位)
复数取模就是对实部、虚部分别取模(至少代码中这么处理)。
证明
几个式子:
然后我们求出了一个 (x) ,另外一个就是 (p-x) 。