二次剩余与Cipolla算法
若存在x,使得
x 2 ≡ a ( m o d p ) x^2\equiv a \pmod{p} x2≡a(modp)
成立且a不是p的倍数,则称a为模p的二次剩余。
下文只讨论p为奇素数的情况。
1、模p二次剩余的个数
对于一个素数p,p的二次剩余有(p-1)/2个,非二次剩余有(p-1)/2个。
因为有 ( p − x ) 2 ≡ x 2 ( m o d p ) (p-x)^2\equiv x^2 \pmod{p} (p−x)2≡x2(modp),所以在[1,(p-1)/2]范围内即可得到模p的所有二次剩余数,只需要证明在[1,(p-1)/2]范围内x2 两两不相等即可。
假设存在 x , y ∈ [ 1 , p − 1 2 ] x,y \in[1,\frac{p-1}{2}] x,y∈[1,2p−1],有 x 2 ≡ y 2 ( m o d p ) x^2\equiv y^2\pmod{p} x2≡y2(modp),则有
x 2 − y 2 ≡ 0 ( m o d p ) ( x + y ) ( x − y ) ≡ 0 ( m o d p ) x^2-y^2\equiv 0\pmod{p}\newline (x+y)(x-y)\equiv 0\pmod{p} x2−y2≡0(modp)(x+y)(x−y)≡0(modp)
根据x,y的取值范围,显然 1 < x + y < p 1<x+y<p 1<x+y<p,又因为 x ≠ y 且 − p < x − y < p x\ne y且-p<x-y<p x=y且−p<x−y<p,所以上述等式不成立。
2、勒让德符号
勒让德符号,或二次特征,是一个由阿德里安-马里·勒让德在1798年尝试证明二次互反律时引入的函数。具体形式为
( n p ) = { 1 , n 为 p 的 二 次 剩 余 − 1 , n 不 为 p 的 二 次 剩 余 0 , n 为 p 的 倍 数 \left (\frac{n}{p}\right)= \left\{\begin{matrix} 1,n为p的二次剩余\\ -1,n不为p的二次剩余\\ 0,n为p的倍数 \end{matrix}\right. (pn)=⎩⎨⎧1,n为p