二次剩余Cipolla算法学习小记

前言

之前遇到过一些关于二次剩余的题目,因为姿势不够都跳了。由于最近觉得自己的数论姿势严重不足,便觉得有必要来学习一下二次剩余相关的算法。
学完后感觉这个算法作者的脑洞真的是比较大,居然能想出这么巧妙的构造。
关于这个算法的介绍,我比较推荐czy大爷的博文

前置技能

(以下内容均在模数 p p p为奇素数的前提下讨论)

二次剩余

首先要搞懂什么是二次剩余。若方程 x 2 ≡ a ( m o d p ) x^2\equiv a\pmod p x2a(modp)有解,则称 a a a p p p的二次剩余,反之则称 a a a p p p的二次非剩余。说白了就是在模意义下能否开根号。
###勒让德符号
勒让德符号是这样定义的:
( a p ) = { 1 , a 为 p 的 二 次 剩 余 − 1 , a 为 p 的 二 次 非 剩 余 0 , a ≡ 0 ( m o d p ) \left(\frac{a}{p}\right)= \begin{cases} 1, & a为p的二次剩余 \\ -1, & a为p的二次非剩余\\ 0, & a\equiv 0\pmod p \end{cases} (pa)=1,1,0,apapa0(modp)

欧拉判别法

a a a是不被 p p p整除的正整数,则 ( a p ) ≡ a p − 1 2 \left(\frac{a}{p}\right)\equiv a^{\frac{p-1}{2}} (pa)a2p1
证明:

( a p ) = 1 \left(\frac{a}{p}\right)=1 (pa)=1时,方程 x 2 ≡ a ( m o d p ) x^2\equiv a\pmod p

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值