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