定义:

\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−10​​a是模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=0p​Cpr​ap−rw​r,我们知道,当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)w​p≡w2p−1​(modp),根据我们之前给出的定理2,可知wp−12=−1\sqrt{w}^{\frac{p-1}{2}}=-1w​2p−1​=−1那么就有ap+wp≡a−w(modp)a^p+\sqrt{w}^{p}≡a-\sqrt{w}(mod p)ap+w​p≡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. 多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程

    多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 1. 说明--其实求解过程大同小异 2. 单应矩阵求解过程 2.1 基于代数误差的线 ...

  2. matlab破损皮革定位,matlab-code-of-TDOAFDOa 干扰源定位代码,应该在 的求解过程中有帮助。 276万源代码下载- www.pudn.com...

    文件名称: matlab-code-of-TDOAFDOa下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 38 KB 上传时间: 2014-05-31 下载 ...

  3. 深度学习(四十)优化求解系列(2)简单理解神经网络求解过程-未完待续

    对于神经网络的求解过程BP,其实说白了就是复合函数的求导过程,所以我们需要先复习一下高数复合函数的求导过程. 一.复合函数的求导法则 1.复合函数: 此函数是一个包含了三层映射过程的复合函数,为了跟后 ...

  4. 两空间异面直线公垂线及交点坐标的求解过程

    转自:https://blog.csdn.net/hengfanz/article/details/44223411 已知空间4点,点A.B构成直线L1, 点C.D构成直线L2, 求L2上点P,使P到 ...

  5. 数据挖掘机器学习[七]---2021研究生数学建模B题空气质量预报二次建模求解过程:基于Stacking机器学习混合模型的空气质量预测{含码源+pdf文章}

    相关文章: 特征工程详解及实战项目[参考] 数据挖掘---汽车车交易价格预测[一](测评指标:EDA) 数据挖掘机器学习---汽车交易价格预测详细版本[二]{EDA-数据探索性分析} 数据挖掘机器学习 ...

  6. ansys在求解过程中死机关机的解决办法

    ansys是一款功能强大的仿真软件.它用于分析工程领域的结构分析和流体动力学.在使用ansys软件时,必须面对许多复杂的问题,并且计算机会崩溃关机.这导致工作人员的时间浪费以及效率低下. ansys关 ...

  7. 布莱克斯科尔斯模型(五) 方程求解过程

    布莱克斯科尔斯模型(五) 方程求解过程 posted on 2019-02-12 20:05 luoganttcc 阅读(...) 评论(...) 编辑 收藏

  8. 多旅行商问题——公式和求解过程概述

    英文:The multiple traveling salesman problem an overview of formulations and solution procedures 摘要: 多 ...

  9. 深度学习笔记(五) 代价函数的梯度求解过程和方法

    作为自己的笔记系列,方便自己查阅和理解. 1)什么是梯度 梯度 本意是一个向量(矢量) 当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点处沿方向变化最快,变化率最大(为该梯度的模 ...

最新文章

  1. hadoop之 Zookeeper 分布式应用程序协调服务
  2. 跳表(skipList)
  3. 处理DateTime.Now不经过ToString()转换的格式(带有AM、PM)问题
  4. Silverlight 4 Beta开发版带着许多新特性发布
  5. 程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)
  6. (转)基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录...
  7. julia有 pytorch包吗_PyTorch 有哪些坑/bug?
  8. 单链表的插入删除以及逆转
  9. mysql 锁怎么使用_MySQL锁的用法之行级锁
  10. 边缘检测算法_机器视觉怎样检测产品边缘
  11. 遗传算法拟合函数(原理及Python实现)
  12. 镀镍金刚石线切割硅片
  13. python实现端口扫描器_python 实现端口扫描工具
  14. vuecli3.0用scss写响应式网页,封装简单的百分比换算函数
  15. python 飞机大战爆炸效果_Pygame飞机大战为什么飞机与敌机碰撞后不再有图片动态切换效果...
  16. linux cp批量复制,【linux】cp 批量复制文件
  17. Riverbed助世界最大集装箱航运公司马士基实现数字化转型
  18. 添加企业微信免验证设置
  19. Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...
  20. 极具挑战性的工作:升级模式库从CQ2002到CQ7

热门文章

  1. [转载](家常菜系列)教你几道八大菜系中的佳肴做法
  2. 用c#实现简易的计算器功能
  3. 【架构】六边形架构理解
  4. linux-alarm函数
  5. 11JavaScript(基础语法)
  6. 微软TECH-ED2010门票到手
  7. 职称计算机考试哪个专业简单,全国计算机职称考试哪些科目简单容易通关
  8. 尼加拉瓜在与哥斯达黎加的边界案中胜出
  9. Intel Xeon E5-2620 v4(至强E5-2620 v4)
  10. 达人评测 华硕ROG 幻 14 2022款怎么样