二次剩余Cipolla算法学习小记

Preface

今天 z 大神给我们讲数论和代数,然后后面讲了几个超级神的算法。 Cipolla 算是其中一个吧。貌似国内直接查名字还没有什么资料,查二次剩余的算法有ACdreamer简略的介绍。今天听讲时算是听懂了大半,回来又搞鼓了整个晚上才算完全弄明白。这个算法真的是从头到尾都是脑洞,太神了!
详细的解释见维基百科


Paper

首先我们要弄清楚什么叫二次剩余,其实就是对于给定的 p(pP) n ,如果有 x 满足 x2n(modp) ,那么 n 在模 p 意义下就是二次剩余。说白了就是模意义下能否开根号。
我们只讨论 p 为奇素数的情况。
我们先定义 Fp ,这是一个数域,其实就是 0 p1 p 个数与模 p 意义下加减乘除运算构成的集合。

  • 定理1:对于 x2n(modp) ,总共有 p12 个的 n 能使该方程有解(将 n=0 情况除去,由于该情况显然有 x=0 )。
  • 证明:我们只用考虑所有 x2 。如果存在不同的两个数 u v ,它们的平方在模 p 意义下同余,那么显然有 p|(u2v2) 。由平方差公式 p|(u+v)(uv) 。显然 p 不可能整除 uv ,因此 p 整除 u+v ,因此 u+v0(modp) 。这个结论反过来也是成立的,因此共有 p12 种互不相同的平方,显然对应了所有有解的 n ,而且同一个 n 还一定存在两个互为相反数的解。

然后我们还要知道一个神奇的东西叫做勒让德符号( Legendre sym

  • 21
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值