二次剩余学习笔记
前言:这是给自己看的博客
题意:解方程 \(x^2 \equiv n\pmod p\),满足 \(p\) 是奇质数。
Part 1
首先判定这个方程是否有解。
如果一个数 \(n\) 满足有任意一个数 \(x\) 使得 \(x^2 \equiv n\pmod p\)(即方程有解),那么定义这个数 \(n\) 为 \(\operatorname{mod} p\) 意义下的二次剩余,否则定义这个数 \(n\) 为 \(\operatorname{mod} p\) 意义下的非二次剩余。
由于 \(p\) 是奇质数,根据费马小定理有
若 \(n\) 是 \(\operatorname{mod} p\) 意义下的二次剩余,则有:
所以当 \(n\) 是 \(\operatorname{mod} p\) 意义下的二次剩余时,则有 \(n^{\frac{p-1}{2}} \equiv 1\),否则 \(n^{\frac{p-1}{2}} \equiv -1\)
于是我们就知道如何快速地判定一个数是否有解。
好像这个东西有个高深莫测的名字叫欧拉判别准则
Part 2
那么如何快速地得知这个数的解呢?
如果有两个解的话,那么两个解肯定是相反数,原因如下:
设这两个解为 \(x_0,x_1\)
\(x_0^2 \equiv n,x_1^2 \equiv n \Rightarrow x_0^2\equiv x_1^2 \Rightarrow x_0^2-x_1^2 \equiv 0 \Rightarrow (x_0+x_1)(x_0-x_1) \equiv 0 \pmod p\)
而且由此也可以知道有 \(\frac{p-1}{2}\) 个数字对应着不同的二次剩余,剩下的 \(\frac{p-1}{2}\) 个数字对应着不同的非二次剩余
接下来就介绍奇奇妙妙的 \(\operatorname{Cipolla}\) 算法了,接下来的内容都抄袭着 \(\sf \color{red}{Kewth}\) 神仙的博客。
构造一个数字 \(a\) 使得 \(a^2-n\) 是一个非二次剩余(这个 \(a\) 可以直接随机出来,显然随机一次的概率有 \(50 \%\) 左右)
再构造一个解 \(i\) 使得 \(i^2 \equiv a^2-n\)
但是因为 \(a^2-n\) 是非二次剩余,故无解。于是我们将 \(i\) 扩展到复数域上,实部和虚部都在 \(\operatorname{mod} p\) 的意义下。
那么 \((a+i)^{p+1}\equiv n \pmod p\),考虑证明。
引理 \(1\) : \(i^p = -i\)
\(i^p = i \times i^{p-1} = i \times (i^{2})^{\frac{p-1}{2}}=i \times (a^2-n)^{\frac{p-1}{2}}=i \times (-1)=-i\)
引理 \(2\) : \((A+B)^p \equiv A^p+B^p \pmod p\)
二项式定理易证。
根据上述两个引理,有:
于是就有 \((a+i)^{p+1} \equiv a^2-i^2\),又因为 \(n \equiv a^2-i^2\),所以 \((a+i)^{p+1} \equiv n\)
所以方程的解之一就是 \((a+i)^{\frac{p+1}{2}}\)
可以用反证法来证明这个解没有虚部。