【算法讲18:二次剩余】勒让德符号 | 欧拉判别法 | Cipolla 算法

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

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 x2a(modm) 有解,则称 a a a m m m二次剩余
    若同余方程 x 2 ≡ a ( m o d m ) x^2\equiv a\pmod m x2a(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 x2a(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=x12a(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 x02x12=(x0+x1)(x0x1)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(x0x1),于是 x 1 ≡ − x 0 ( m o d p ) x_1\equiv -x_0\pmod p x1x0(modp) 或者 x 1 ≡ x 0 ( m o d p ) x_1\equiv x_0\pmod p x1x0(modp).
    因此,若 x 2 ≡ a ( m o d p ) x_2\equiv a\pmod p x2a(modp),则只能有两个不同余的解。
  • 定理 11.1 11.1 11.1
    p p p 是奇素数,则在整数 1 , 2 , ⋯   , p − 1 1,2,\cdots,p-1 1,2,,p1 中, p p p 的二次剩余恰有 ( p − 1 ) / 2 (p-1)/2 (p1)/2个,二次非剩余恰有 ( p − 1 ) / 2 (p-1)/2 (p1)/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)=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值