【算法讲18:二次剩余】
S o u r c e \mathfrak{Source} Source
- 《初等数论及其应用》第六版第十一章
省略了很多帮助理解的例子和证明。浓缩了一下密集的知识点。
Cipolla算法学习小记 [ 1 ]
⌈ \lceil ⌈二次剩余 ⌋ \rfloor ⌋与 ⌈ \lceil ⌈二次非剩余 ⌋ \rfloor ⌋
- 定义:
设 m m m 是正整数, a a a 是整数,若 ( a , m ) = 1 (a,m)=1 (a,m)=1,且同余方程 x 2 ≡ a ( m o d m ) x^2\equiv a\pmod m x2≡a(modm) 有解,则称 a a a 为 m m m 的二次剩余。
若同余方程 x 2 ≡ a ( m o d m ) x^2\equiv a\pmod m x2≡a(modm) 无解,则称 a a a 为 m m m 的二次非剩余。 - 引理 11.1 11.1 11.1
设 p p p 是奇素数, a a a 是不被 p p p 整除的整数,则同余方程
x 2 ≡ a ( m o d p ) x^2\equiv a\pmod p x2≡a(modp)
或者无解,或者恰有两个模 p p p 不同余的解。
证明:(1)若该同余方程有解,不妨设 x = x 0 x=x_0 x=x0,易得 x = − x 0 x=-x_0 x=−x0 是不同余的解。
(2)为证不存在多于两个不同余的解,设 x 0 x_0 x0 和 x 1 x_1 x1 都是该同余方程的解。
则有 x 0 2 = x 1 2 ≡ a ( m o d p ) x_0^2=x_1^2\equiv a\pmod p x02=x12≡a(modp),于是 x 0 2 − x 1 2 = ( x 0 + x 1 ) ( x 0 − x 1 ) ≡ 0 ( m o d p ) x_0^2-x_1^2=(x_0+x_1)(x_0-x_1)\equiv 0\pmod p x02−x12=(x0+x1)(x0−x1)≡0(modp)
因此 p ∣ ( x 0 + x 1 ) p|(x_0+x_1) p∣(x0+x1) 或 p ∣ ( x 0 − x 1 ) p|(x_0-x_1) p∣(x0−x1),于是 x 1 ≡ − x 0 ( m o d p ) x_1\equiv -x_0\pmod p x1≡−x0(modp) 或者 x 1 ≡ x 0 ( m o d p ) x_1\equiv x_0\pmod p x1≡x0(modp).
因此,若 x 2 ≡ a ( m o d p ) x_2\equiv a\pmod p x2≡a(modp),则只能有两个不同余的解。 - 定理 11.1 11.1 11.1
若 p p p 是奇素数,则在整数 1 , 2 , ⋯ , p − 1 1,2,\cdots,p-1 1,2,⋯,p−1 中, p p p 的二次剩余恰有 ( p − 1 ) / 2 (p-1)/2 (p−1)/2个,二次非剩余恰有 ( p − 1 ) / 2 (p-1)/2 (p−1)/2 个。 - 勒让德符号
设 p p p 是奇素数,整数 a a a 不被 p p p 整除,勒让德符号定义为:
( a p ) = { 1 若 a 是 p 的 二 次 剩 余 − 1 若 a 是 p 的 二 次 非 剩 余 (\frac{a}{p})= \begin{cases} 1&若 a是p的二次剩余\\ -1&若a是p的二次非剩余\\ \end{cases} (pa)=

本文围绕Cipolla算法展开,先介绍了二次剩余与二次非剩余的定义、相关引理和定理,如勒让德符号、欧拉判别法等,还阐述了二次互反律。接着详细讲解Cipolla算法,包括步骤、证明,以及代码中求(a+ω)(p+1)/2的方法,时间复杂度为O(Tlogn)。


被折叠的 条评论
为什么被折叠?



