其他分享
首页 > 其他分享> > 模数为奇素数的二次同余方程

模数为奇素数的二次同余方程

作者:互联网

模数为奇素数的二次同余方程

求解二次同余方程\(x^2 \equiv n \pmod p\)(\(p\)为奇素数)

要求二次同余方程组,就必须先判断方程是否有解,这一部分我懒得写,在此略去。而当\(n=0\)显然只有\(x \equiv 0\)一个解。下面讨论\(n \not \equiv 0\) 的情况。

此时这个方程有且仅有两个解。证明如下:

若\(x \equiv x_1\)是方程的一个解,则\(x \equiv -x_1\)同样是方程的解,因此只需证明不存在更多解。设方程的两个解分别为\(x \equiv x_1\)和\(x \equiv x_2\),则\(n \equiv x_1 ^ 2 \equiv x_2 ^ 2\)。移项并因式分解可得

\[(x_1 + x_2)(x_1 - x_2) \equiv 0 \pmod p \]

我们分析这个式子,由于\(x_1 \not \equiv x_2\),所以\(x_1 - x_2 \not \equiv 0\),所以\(x_1 + x_2 \equiv 0\),即方程的解在模\(p\)意义下互为相反数,故方程有且仅有两个解。

Cipolla算法

为了求解模数为奇素数时的二次同余方程,我们引入\(\text{Cipolla}\)算法。

对于方程\(x^2 \equiv n \pmod p\) 我们先找到一个\(a\),使得\(a^2 - n\)是模\(p\)的二次非剩余,然后扩域,设\(i^2 \equiv a^2 - n\),此时\((a + i)^{\frac{p + 1}{2}}\)即为我们要求的\(x\)。

为什么?

注意到$$a^2 - i^2 \equiv (a + i)(a - i) \equiv n \pmod p$$

那么我们需要证明的就是$$(a + i)^{p + 1} \equiv (a + i)(a - i)$$

下面给出两个引理

\(\text{Lemma 1}\) $$i^p\equiv -i$$

这是因为

\[i^p \equiv i(i^{2})^{\frac{p - 1}{2}} \]

而\(i^2\)是模\(p\)的二次非剩余,所以

\[(i^2)^{\frac{p-1}{2}} \equiv -1 \]

代入上式即可

\(\text{Lemma 2}\)

对于模\(p\)意义下的任意整数\(x,y\),我们有$$(x+y)^p \equiv x ^ p + y ^ p$$

这是因为由二项式定理$$(x+y)^p \equiv \sum_{k=0}^p \binom{p}{k} x^k y^{p-k} \equiv x ^ p+y ^ p$$

现在考虑之前提出的式子

\[\begin{align*} (a + i)^{p + 1} &\equiv (a + i)(a+i)^p \\ &\equiv (a+i)(a^p+i^p) \\ &\equiv (a+i)(a-i) \end{align*} \]

得证

具体只要实现一个复数类就行了

标签:方程,二次,pmod,为奇,模数,同余,equiv
来源: https://www.cnblogs.com/DCH233/p/16478234.html