二次剩余和 Cipolla 算法
首先是素数模同余方程的相关理论。
下设 $p\in $ 是质数,\(f(x)=\sum_{i=0}^n a_ix^i\),\(x\in \Z_p,p\not\mid a_n\)。
引理 1
如果 \(f(x)\equiv 0\pmod p\) 具有解 \(x_1\sim x_k\),且 \(k\le n\)。则
\]
其中 \(\deg g=n-k,[x^{n-k}]g(x)=a_n\)。
归纳法不难证明此命题。
可以推出威尔逊定理。
定理 1 Lagrange 定理
\]
至多具有 \(n\) 个不同解。
证明:
设其具有解 \(x_1\sim x_{n+1}\),则有
\]
取 \(x=x_{n+1}\),右侧任何数都不整除 \(p\)。
推论:如果有超过 \(n\) 个解,那么所有系数整除 \(p\)。
定理 2
设 \(n\le p\),则首一多项式 \(f(x)\equiv 0\pmod p\) 有 \(n\) 个解,当且仅当:
存在整系数多项式 \(q(x),r(x)\),且 \(\deg r<n\),满足:
\]
证明:
首先证明必要性。若 \(f(x)\equiv 0\pmod p\) 有 \(n\) 个解,那么考虑 \(r_1(x)=x^p-x-f(x)q(x)\),应该有 \(n\) 个解。而 \(n>\deg r_1\),故 \(r_1\) 的系数整除 \(p\)。那么 \(r_1(x)=pr(x)\)。
充分性:首先 \(x^p-x=f(x)q(x)+pr(x)\equiv 0\pmod p\) 有 \(p\) 个解,根据费马小定理。设 \(f(x)\equiv 0\pmod p\) 有 \(s\) 个解,显然 \(s\le n\)。
而 \(q(x)\equiv 0\) 有至多 \(p-n\) 个解,又因为 \(\{x\mid f(x)q(x)\equiv 0\}=\{x\mid f(x)\equiv 0\}\cup \{x\mid q(x)\equiv 0\}\),\(p\le (p-n)+s\),即 \(s\ge n\)。则 \(s=n\),证毕。
接下来依托定理 \(2\),二(\(k\))次剩余存在的条件可以被证明。
定理 3
设 \(n\not\mid p-1,p\not\in a\)。
\]
则此方程有解当且仅当
\]
若有解,有 \(n\) 个解。
证明:
必要性显然。
充分性是某个 WF 选手不会的:
=xP(x)(x^n-a)+(a^{\frac{p-1}n}-1)x\\
=xP(x)(x^n-a)+0\\
\]
其中 \(P(x)\) 是整系数多项式。\(xP(x)\) 当然也是。根据以上定理,存在 \(n\) 个解。
对于二次剩余:
\]
所以 \(a\) 是非二次剩余当且仅当 \(a^{\frac{p-1}2}\equiv -1\pmod p\)。
Cipolla
不难发现 \(\dfrac{p-1}2\) 个数有二次剩余,同样多的数没有。
考虑求解
\]
所以,可以随机出 \(a\) 使得 \(a^2-c\) 不是二次剩余。此时有 \((a^2-c)^{\frac{p-1}2}\equiv -1\pmod p\)。
对 \(\Z_p\) 环进行代数扩张,变为 \(\C_p\),虚根 \(\omega\) 认为是 \(\omega^2\equiv a^2-c\pmod p\)。
不难发现 \(\omega^p=-\omega\)。
下面证明:\(c=(a+\omega)^{p+1}\)。
根据升幂引理,\((a+\omega)^{p+1}=(a^p+\omega^p)(a+\omega)=(a-\omega)(a+\omega)=c\)。
证毕!
二次剩余和 Cipolla 算法的更多相关文章
- 二次剩余Cipolla算法学习笔记
对于同余式 \[x^2 \equiv n \pmod p\] 若对于给定的\(n, P\),存在\(x\)满足上面的式子,则乘\(n\)在模\(p\)意义下是二次剩余,否则为非二次剩余 我们需要计算的 ...
- 二次剩余定理及Cipolla算法入门到自闭
二次剩余定义: 在维基百科中,是这样说的:如果q等于一个数的平方模 n,则q为模 n 意义下的二次剩余.例如:x2≡n(mod p).否则,则q为模n意义下的二次非剩余. Cipolla算法:一个解决 ...
- Cipolla算法学习小记
转自:http://blog.csdn.net/doyouseeman/article/details/52033204 简介 Cipolla算法是解决二次剩余强有力的工具,一个脑洞大开的算法. 认真 ...
- Cipolla算法学习笔记
学习了一下1个$\log$的二次剩余.然后来水一篇博客. 当$p$为奇素数的时候,并且$(n, p) \equiv 1 \pmod{p}$,用Cipolla算法求出$x^2 \equiv n \pmo ...
- 二次剩余的判定及Cipolla算法
二次剩余 ppp是奇素数.所有的运算都是在群Zp∗Z_{p}^{*}Zp∗中的运算.方程x2=a≠0x^2=a \neq 0x2=a̸=0问是否有解,以及解是什么?若有解,aaa就是模ppp的二次 ...
- 二次剩余 Cipolla算法
欧拉准则 \(a\)是\(p\)的二次剩余等价于\(a^{\frac{p-1}{2}}\equiv 1\pmod p\),\(a\)不是\(p\)的二次剩余等价于\(a^{\frac{p-1}{2}} ...
- 【模板】【数论】二次剩余Cipolla算法,离散对数BSGS 算法
Cipolla LL ksm(LL k,LL n) { LL s=1; for(;n;n>>=1,k=k*k%mo) if(n&1) s=s*k%mo; return s; } n ...
- [ural1132]Square Root(cipolla算法)
题意:求${x^2} \equiv n\bmod p$ 解题关键: 定理:若$a$满足$w = {a^2} - n$是模$p$的二次非剩余,即,${x^2} = w\bmod p$无解,则${(a + ...
- 数学杂烩总结(多项式/形式幂级数+FWT+特征多项式+生成函数+斯特林数+二次剩余+单位根反演+置换群)
数学杂烩总结(多项式/形式幂级数+FWT+特征多项式+生成函数+斯特林数+二次剩余+单位根反演+置换群) 因为不会做目录所以请善用ctrl+F 本来想的是笔记之类的,写着写着就变成了资源整理 一些有的 ...
- 【数论】【二次剩余】【map】hdu6128 Inverse of sum
部分引用自:http://blog.csdn.net/v5zsq/article/details/77255048 所以假设方程 x^2+x+1=0 在模p意义下的解为d,则答案就是满足(ai/aj) ...
随机推荐
- 《HelloGitHub》第 104 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...
- Vue 二维码组件
1.前言 该组件依赖qrcode.js与element-ui 支持二维码大小配置,点击大图预览 该组件以vue文件形式进行封装,需要配置httpVueLoader插件进行引入,其他格式请自行更改源码 ...
- elementui多选框部分禁用
直接上代码 <el-table-column type="selection" :selectable="selectable" align=" ...
- 了解URLSearchParams对象
URLSearchParams对象用于处理URL中查询字符串,即?之后的部分. 1.语法 其实例对象的用法和Set数据结构类似.实例对象本身是可遍历对象.但是不是遍历器. var paramsStri ...
- Shiro简单入门+个人理解(2)
今天开始了Shiro认证及授权的部分,认证及授权是Shiro的主要功能,虽然Shiro还具有加密等功能,但在实际开发时,很少会使用到,在公司一般都有自己的一套加密方式,具体我就不说话了,毕竟有保密协议 ...
- 在分布式追踪系统中使用 W3C Trace Context
在分布式追踪系统中使用 W3C Trace Context https://dev.to/luizhlelis/using-w3c-trace-context-standard-in-distribu ...
- ChatGPT生成接口测试用例(一)
接口测试在软件开发生命周期中扮演着至关重要的角色,有助于验证不同模块之间的交互是否正确.若协议消息被恶意修改,系统是否能够恰当处理,以确保系统的功能正常运行,不会出现宕机或者安全问题. 5.1 Cha ...
- 【MyBatis】学习笔记12:通过级联属性赋值解决多对一的映射关系
[Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...
- 浅谈LINUX中/DEV/VDA1文件满了解决方法
1. 先查看内存使用情况 df -h 1 2. 进入/dev/vdal的磁盘挂载的目录 /,查看各个文件占用大小 cd / du -sh * 1 2 注意:进入那个比较大的文件,我这里发现var这个文 ...
- Qt编写物联网管理平台35-实时曲线
一.前言 设备采集到的数据,通过曲线展示也是一种非常好的方式,尽管之前已经有了表格数据展示.设备面板展示.设备地图展示等,实时曲线也是一种不错的方式,这个用户自由选择,反正通过端口已经拿到了所有要采集 ...