二次剩余学习笔记
前言:这是给自己看的博客
题意:解方程 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}}
可以用反证法来证明这个解没有虚部。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步