什么叫二次剩余,其实就是对于给定的
p(p∈P)和n
,如果有
x
满足
我们先定义
Fp
,这是一个数域,其实就是
0
到
定理1:对于
x2≡n(modp),
总共有
p−12
个的
n
能使该方程有解(将
证明:我们只用考虑所有
x2
。如果存在不同的两个数
u、v,
它们的平方在模
p
意义下同余,那么显然有
Description:
求解 x2≡n(modp) 。 p 是一个奇质数。
由费马小定理:
np−1≡1(modp)
所以:
np−12≡±1(modp)
由欧拉准则:
(np)≡np−12(modp)
其中:
(np)
为勒让德符号。
因为 x≡n12(modp) ,所以有 xp−1≡np−12≡1(modp) 。即:
(np)=⎧⎩⎨⎪⎪1−10n在模p意义下是二次剩余n在模p意义下不是二次剩余n≡0(modp)
设:
k=a2−n,ω=k√
则该方程的解为:
x≡(a+ω)p+12(modp)
证明:若
k
是该模意义下的非二次剩余,
则:
同时:
(a+b)p≡ap+bp(modp)
则:
另一解为:
x2≡−x1(modp)
如何找到这个 k <script type="math/tex" id="MathJax-Element-141">k</script>呢。因为非二次剩余的个数大约有一半,随机几次即可。
话不多说,可以参考资料:
ACdreamer 二次同余方程的解
二次剩余Cipolla算法学习小记