二次剩余学习笔记
本来不想学这东西,但是发现学了就能水两个多项式板子,那还是学吧。
1 二次剩余是什么
\[x^2\equiv n\pmod p
\]
其中 \(p\) 为奇质数。
你发现这玩意很像模意义的开根,事实上就是。
如果方程存在一个解,\(n\) 就是模 \(p\) 意义下的二次剩余,反之是非二次剩余。
2 解的数量
假设存在多个解。
\[x_0^2\equiv x_1^2\pmod p
\]
\[x_0^2-x_1^2\equiv 0\pmod p
\]
\[(x_0-x_1)(x_0+x_1)\equiv 0\pmod p
\]
\[\because x_0\not\equiv x_1\pmod p
\]
\[\therefore x_0+x_1\equiv0\pmod p
\]
因此我们证明了如果存在解,必定存在恰好两个解。
3 判断是否是二次剩余
假设 \(0<n<p\)。
\[n^{p-1}\equiv 1\pmod p
\]
\[(n^\frac{p-1}{2})^2\equiv1\pmod p
\]
因此 \(n^\frac{p-1}{2}\equiv\pm1\pmod p\)
结论:取 \(1\) 的时候是二次剩余,取 \(-1\) 的时候不是。
证明先鸽着。
4 求解二次剩余
我们使用 Cipolla 算法。
首先,我们随便找一个数 \(a\),让 \(a\) 不是模 \(p\) 意义下的二次剩余。
定义 \(\omega\) 为一个虚数,使得 \(\omega^2=a^2-n\)。
那么一个解就是 \((a+\omega)^\frac{p+1}{2}\)。