二次剩余推理及其求解过程
定义:
\quad给出一个式子x2≡n(modp)x^2≡n(mod p)x2≡n(modp),再给出nnn和ppp,如果能求得一个x满足该式子,即xxx满足x2=n+kp,k∈Zx^2=n+kp,k\in Zx2=n+kp,k∈Z,那么我们称nnn是模ppp的二次剩余,若不存在这样的xxx,那么我们称nnn是摸ppp的非二次剩余。同时我们称xxx为该二次同余方程的解。
应用:
\quad对于一个数nnn,如果我们要求n(modp)\sqrt{n}(modp)n(modp)的值,那么我们可以看nnn是否是模ppp的二次剩余,如果是就会满足x2≡n(modp)−>x≡n(modp)x^2≡n(mod p)->x≡\sqrt{n}(modp)x2≡n(modp)−>x≡n(modp),我们可以用xxx来代替n\sqrt{n}n,即只需要求该二次同余方程的解即可。
就是如果该二次同余方程有解的话,那么nnn可以在摸ppp的情况下开根号。
定理1:
\quad对于二次同余方程x2≡n(modp)x^2≡n(mod p)x2≡n(modp),一共有p−12+1\frac{p-1}{2}+12p−1+1个nnn的值可以让方程有解,其中+1+1+1代表的是n=0n=0n=0的情况,此时x=0x=0x=0方程显然成立。
证明:
假设u2=ap+ku^2=ap+ku2=ap+k即u2≡k(modp)u^2≡k(mod p)u2≡k(modp)
因为:∀n∈Z,(u+np)2=u2+n2p2+2unp=(a+n2p+2un)p+k\forall n \in Z,(u+np)^2=u^2+n^2p^2+2unp=(a+n^2p+2un)p+k∀n∈Z,(u+np)2=u2+n2p2+2unp=(a+n2p+2un)p+k
所以:u2≡(u+np)2(modp)u^2≡(u+np)^2(mod p)u2≡(u+np)2(modp)
那么由此可知我们只需要考虑[0,p−1][0,p-1][0,p−1]范围内的x2x^2x2即可。
若存在两个不同的数u,v∈[0,p−1]u,v\in[0,p-1]u,v∈[0,p−1],满足u2≡v2(modp)u^2≡v^2(mod p)u2≡v2(modp),
显然有u2−v2≡0(modp)u^2-v^2≡0(mod p)u2−v2≡0(modp)
由平方差公式可得(u+v)(u−v)≡0(modp)(u+v)(u-v)≡0(mod p)(u+v)(u−v)≡0(modp),由uuu,vvv的范围可知(u−v)(u-v)(u−v)不可能满足,所以必满足(u+v)≡0(modp)(u+v)≡0(mod p)(u+v)≡0(modp),即u+v=pu+v=pu+v=p所以一共有p−12\frac{p-1}{2}2p−1个u,vu,vu,v的值可以让方程有解。再加上000的情况就是p−12+1\frac{p-1}{2}+12p−1+1。
接下来引入勒让德符号:
(ap)={1a是模p意义下的二次剩余−1a是模p意义下的非二次剩余0a≡0(modp)(\frac{a}{p})=\left\{ \begin{array}{rcl} 1 & & a是模p意义下的二次剩余\\ -1 & & a是模p意义下的非二次剩余\\ 0 & & a≡0(mod p) \end{array} \right. (pa)=⎩⎨⎧1−10a是模p意义下的二次剩余a是模p意义下的非二次剩余a≡0(modp)
定理2:
(ap)=ap−12(modp)(\frac{a}{p})=a^{\frac{p-1}{2}}(modp)(pa)=a2p−1(modp)
证明:
当aaa是模ppp的二次剩余时,令x2≡a(modp)x^2≡a(mod p)x2≡a(modp),
那么就有xp−1≡1(modp)x^{p-1}≡1(mod p)xp−1≡1(modp),由费马小定理可知xxx存在。
当aaa是模ppp的非二次剩余时,令x2≡a(modp)x^2≡a(mod p)x2≡a(modp),
那么就有xp−1≡1(modp)x^{p-1}≡1(mod p)xp−1≡1(modp),由费马小定理可知xxx不存在。
当a≡0(modp)a≡0(mod p)a≡0(modp)显然满足。
定理3:
设aaa满足w=a2−nw=a^2-nw=a2−n是模ppp的非二次剩余,即x2≡w(modp)x^2≡w(mod p)x2≡w(modp)无解。
那么x≡(a+w)p−12x≡(a+\sqrt{w})^{\frac{p-1}{2}}x≡(a+w)2p−1是二次同余方程x2≡n(modp)x^2≡n(mod p)x2≡n(modp)的解。
证明:
给出一个式子(a+w)p(a+\sqrt{w})^{p}(a+w)p将其二项式展开∑i=0pCprap−rwr\sum_{i=0}^{p}C_p^ra^{p-r}\sqrt{w}^r∑i=0pCprap−rwr,我们知道,当ppp为奇素数时,若i≠0,i≠pi \neq 0,i \neq pi=0,i=p,则有Cpi≡0(modp)C_p^i≡0(mod p)Cpi≡0(modp),所以该二项式除了第一项和最后一项,其余项模ppp模ppp都为000,那么就有(a+w)p≡ap+w)p(modp)(a+\sqrt{w})^{p}≡a^p+\sqrt{w})^{p}(mod p)(a+w)p≡ap+w)p(modp),成立。由费马小定理可得 ap≡ap−1a≡a(modp)a^p≡a^{p-1}a≡a(mod p)ap≡ap−1a≡a(modp)。
因为wp≡wp−12(modp)\sqrt{w}^{p}≡w^{\frac{p-1}{2}}(mod p)wp≡w2p−1(modp),根据我们之前给出的定理2,可知wp−12=−1\sqrt{w}^{\frac{p-1}{2}}=-1w2p−1=−1那么就有ap+wp≡a−w(modp)a^p+\sqrt{w}^{p}≡a-\sqrt{w}(mod p)ap+wp≡a−w(modp)。
综述:(a+w)p≡a−w(modp)(a+\sqrt{w})^{p}≡a-\sqrt{w}(mod p)(a+w)p≡a−w(modp)。
可得:
(a+w)p+1≡(a+w)p(a+w)(a+\sqrt{w})^{p+1}≡(a+\sqrt{w})^{p}(a+\sqrt{w})(a+w)p+1≡(a+w)p(a+w)。
\quad \quad\quad\quad\quad ≡(a+w)(a+w)≡(a+\sqrt{w})(a+\sqrt{w})≡(a+w)(a+w)。
\quad \quad\quad\quad\quad ≡a2−w≡a^2-w≡a2−w。
\quad \quad\quad\quad\quad ≡n(modp)≡n(modp)≡n(modp)。
\quad 有了最后一个定理,我们就可以通过随机选择a的值来找到一个满足条件的解。之前的链接里有详细地解释为何可以随机取aaa的值,总的来说就是找到正解所需的次数的期望只有222。所以随机取aaa的值可以很快地找到一个解,代码如下。
算法实现:因为大约有一半的数都是非二次剩余,所以可以随机一个aaa,把w\sqrt{w}w 当作一个复数单位,定义一个复数运算像这样:
Code:
int w,a;
struct cp
{int x,y;inline cp(R int _x,R int _y):x(_x),y(_y) {}inline cp operator *(const cp &b)const{return cp(add(mul(x,b.x),mul(w,mul(y,b.y))),add(mul(x,b.y),mul(y,b.x)));}
};
int ksm(R cp x,R int y)
{R cp res(1,0);for(; y; y>>=1,x=x*x)if(y&1)res=res*x;return res.x;
}
int Sqrt(int x)
{if(!x)return 0;if(ksm(x,(P-1)>>1)==P-1)return -1;while(true){a=mul(rand(),rand()),w=dec(mul(a,a),x);if(ksm(w,(P-1)>>1)==P-1)return ksm(cp(a,1),(P+1)>>1);}
}
二次剩余推理及其求解过程相关推荐
- 多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程
多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 1. 说明--其实求解过程大同小异 2. 单应矩阵求解过程 2.1 基于代数误差的线 ...
- matlab破损皮革定位,matlab-code-of-TDOAFDOa 干扰源定位代码,应该在 的求解过程中有帮助。 276万源代码下载- www.pudn.com...
文件名称: matlab-code-of-TDOAFDOa下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 38 KB 上传时间: 2014-05-31 下载 ...
- 深度学习(四十)优化求解系列(2)简单理解神经网络求解过程-未完待续
对于神经网络的求解过程BP,其实说白了就是复合函数的求导过程,所以我们需要先复习一下高数复合函数的求导过程. 一.复合函数的求导法则 1.复合函数: 此函数是一个包含了三层映射过程的复合函数,为了跟后 ...
- 两空间异面直线公垂线及交点坐标的求解过程
转自:https://blog.csdn.net/hengfanz/article/details/44223411 已知空间4点,点A.B构成直线L1, 点C.D构成直线L2, 求L2上点P,使P到 ...
- 数据挖掘机器学习[七]---2021研究生数学建模B题空气质量预报二次建模求解过程:基于Stacking机器学习混合模型的空气质量预测{含码源+pdf文章}
相关文章: 特征工程详解及实战项目[参考] 数据挖掘---汽车车交易价格预测[一](测评指标:EDA) 数据挖掘机器学习---汽车交易价格预测详细版本[二]{EDA-数据探索性分析} 数据挖掘机器学习 ...
- ansys在求解过程中死机关机的解决办法
ansys是一款功能强大的仿真软件.它用于分析工程领域的结构分析和流体动力学.在使用ansys软件时,必须面对许多复杂的问题,并且计算机会崩溃关机.这导致工作人员的时间浪费以及效率低下. ansys关 ...
- 布莱克斯科尔斯模型(五) 方程求解过程
布莱克斯科尔斯模型(五) 方程求解过程 posted on 2019-02-12 20:05 luoganttcc 阅读(...) 评论(...) 编辑 收藏
- 多旅行商问题——公式和求解过程概述
英文:The multiple traveling salesman problem an overview of formulations and solution procedures 摘要: 多 ...
- 深度学习笔记(五) 代价函数的梯度求解过程和方法
作为自己的笔记系列,方便自己查阅和理解. 1)什么是梯度 梯度 本意是一个向量(矢量) 当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点处沿方向变化最快,变化率最大(为该梯度的模 ...
最新文章
- hadoop之 Zookeeper 分布式应用程序协调服务
- 跳表(skipList)
- 处理DateTime.Now不经过ToString()转换的格式(带有AM、PM)问题
- Silverlight 4 Beta开发版带着许多新特性发布
- 程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)
- (转)基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录...
- julia有 pytorch包吗_PyTorch 有哪些坑/bug?
- 单链表的插入删除以及逆转
- mysql 锁怎么使用_MySQL锁的用法之行级锁
- 边缘检测算法_机器视觉怎样检测产品边缘
- 遗传算法拟合函数(原理及Python实现)
- 镀镍金刚石线切割硅片
- python实现端口扫描器_python 实现端口扫描工具
- vuecli3.0用scss写响应式网页,封装简单的百分比换算函数
- python 飞机大战爆炸效果_Pygame飞机大战为什么飞机与敌机碰撞后不再有图片动态切换效果...
- linux cp批量复制,【linux】cp 批量复制文件
- Riverbed助世界最大集装箱航运公司马士基实现数字化转型
- 添加企业微信免验证设置
- Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...
- 极具挑战性的工作:升级模式库从CQ2002到CQ7