二次剩余

给定y和奇质数p,求x,使得\(x^2≡y(mod p)\)

勒让德符号(legendre symbol)

以前看视频的截图
求解\(x^2\equiv a(mod\ p)\)时,我们可用勒让德符号来判定他是否有解
(前提,p必须为奇素数)
\(\begin{pmatrix} \frac{a}{p} \end{pmatrix}=\begin{cases}0 (a\equiv 0(mod\ p))\\1(a\%p意义下是二次剩余)\\-1(a\%p意义下是二次非剩余)\end{cases}\)
有时为了印刷上的方便,会写成\((a|p)\)
0认为是特殊情况,这里不过分讨论

这里只说明第ii条,因为其他的都很显然(或者看完ii条之后),iii说明只他是个完全积性函数

公式\((a|p)=a^{\frac{p-1}{2}}(mod\ p)\)

也许还可以叫欧拉判别法
首先证明\(a^{\frac{p-1}{2}}(mod\ p)=1或-1\)
\(a^{p-1}-1=(a^{\frac{p-1}{2}}+1)(a^{\frac{p-1}{2}}-1)\equiv 0 (mod\ p)\)
显然,\(a^{\frac{p-1}{2}}(mod\ p)只有=1或-1\)时,才可能成立

a为%p意义下的二次剩余时\(a^{\frac{p-1}{2}}\equiv 1(mod\ p)\)
\(x^{2}\equiv a(mod\ p)\)也可以说为\(x\equiv a^{\frac{1}{2}}\equiv x^{p-1}(mod\ p)\)
而费马小定理又可以得到\(x^{p-1}\equiv 1(mod\ p)\)
存在x

a为%p意义下的二次非剩余时\(a^{\frac{p-1}{2}}\equiv -1(mod\ p)\)
也就是\(x^{p-1}\equiv -1(mod\ p)\)
而费马小定理又可以得到\(x^{p-1}\equiv 1(mod\ p)\)
所以不存在x

结论1

1到\(p-1\)中有\(\frac{p-1}{2}\)个勒让德符号为1,\(\frac{p-1}{2}\)个勒让德符号为-1
在%p意义下,a,P−a平方的结果是一样的,1 到 P−1的平方就会有\(\frac{p-1}{2}\)个互不相同的数,剩下的就不是二次剩余

结论 2

\((a+b)^p≡a^p+b^p (Mod p)\)
证明:直接展开二项式定理,因为p是质数,除了i=0和p项,其他项分子的p分母都消不掉,会被模成0,剩下\(a^p+b^p\)

Cipolla's Algorithm.

求解\(x^2≡y(mod p)\)时
不断随机a,使得\(\begin{pmatrix} \frac{a^2-y}{p} \end{pmatrix}=-1\)
结论1可以知道,随机一两次就能找到
令\(w=\sqrt{a^2-y},x=(a+w)^{\frac{p+1}{2}}\)

结论3 \(w^p\equiv -w\)

证明:\(w^p\equiv w^{p-1}*w\equiv (a^2-y)^{\frac{p-1}{2}}*w\equiv -w\)
\(x^2\equiv (a+w)^{p+1}\)
\(\ \ \ \ \equiv (a+w)^{p}(a+w)\)
结论2可知
\(\ \ \ \ \equiv (a^p+w^p)(a+w)\)
结论3又知
\(\ \ \ \ \equiv(a^{p-1}*a+w^{p-1}*w)(a+w)\)
\(\ \ \ \ \equiv(a-w)(a+w)\)
\(\ \ \ \ \equiv a^2-w^2\)
\(\ \ \ \ \equiv y\)
可w这个虚部咋计算,根据拉格朗日定理,虚部系数为0

代码

咕咕

end

太多摘抄qwq
主要参考https://blog.csdn.net/L_0_Forever_LF/article/details/79052135
wiki的图片很棒
附带一个题,不过没大有联系
求1000位数是否是完全平方数,yes or no
用几个模数多试几次,再勒让德符号判定一下是否有解

二次剩余&&Cipolla的更多相关文章

  1. 二次剩余Cipolla算法学习笔记

    对于同余式 \[x^2 \equiv n \pmod p\] 若对于给定的\(n, P\),存在\(x\)满足上面的式子,则乘\(n\)在模\(p\)意义下是二次剩余,否则为非二次剩余 我们需要计算的 ...

  2. 二次剩余-Cipolla

    二次剩余 \(Cipolla\) 算法 概述 大概就是在模 \(p\) 意义下开根号,如求解方程\(x^2\equiv n(mod\ p)\). 这里只考虑 \(p\) 为素数的情况.若 \(p=2\ ...

  3. 二次剩余 Cipolla算法

    欧拉准则 \(a\)是\(p\)的二次剩余等价于\(a^{\frac{p-1}{2}}\equiv 1\pmod p\),\(a\)不是\(p\)的二次剩余等价于\(a^{\frac{p-1}{2}} ...

  4. 【模板】【数论】二次剩余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 ...

  5. URAL 1132 Square Root(二次剩余定理)题解

    题意: 求\(x^2 \equiv a \mod p\) 的所有整数解 思路: 二次剩余定理求解. 参考: 二次剩余Cipolla's algorithm学习笔记 板子: //二次剩余,p是奇质数 l ...

  6. xgzc— math 专题训练(二)

    费马小定理&欧拉定理 费马小定理: 如果\(p\)是一个质数,而整数\(a\)不是\(p\)的倍数,\(a^{p-1}\equiv1\pmod p\) 欧拉定理: 当\(a\)与\(n\)互质 ...

  7. 二次剩余定理及Cipolla算法入门到自闭

    二次剩余定义: 在维基百科中,是这样说的:如果q等于一个数的平方模 n,则q为模 n 意义下的二次剩余.例如:x2≡n(mod p).否则,则q为模n意义下的二次非剩余. Cipolla算法:一个解决 ...

  8. 二次剩余的判定及Cipolla算法

    二次剩余 ppp是奇素数.所有的运算都是在群Zp∗Z_{p}^{*}Zp∗​中的运算.方程x2=a≠0x^2=a \neq 0x2=a̸​=0问是否有解,以及解是什么?若有解,aaa就是模ppp的二次 ...

  9. 二次剩余从csdn

    欧拉准则 模\(p\)意义下,\(a\)是二次剩余等价于\(a^{\frac{p-1}{2}}\equiv 1\),\(a\)不是二次剩余等价于\(a^{\frac{p-1}{2}}\equiv -1 ...

随机推荐

  1. linux中截取文件的特定字节(去掉utf-8 bom头)

    事出有因,之所以要截取特定字节,是为了给utf-8编码的文件去掉bom头. bom头好去啊,notepad++文本编辑器中就有这个功能啊.可是,问题所在是要编辑的文件太大了,300MB,小电脑卡shi ...

  2. 关于toolchain(工具链)的一点知识

    之前一直觉得toolchain是个高大上的东西,现摘录 uClibc中的FAQ以助理解. A toolchain consists of GNU binutils, the gcc compiler, ...

  3. SQLSetStmtAttr

    SQLSetStmtAttr 函数定义: Stmt是用来执行SQL语句的句柄,这个函数是用来设置她的属性的 SQLRETURN SQLSetStmtAttr( SQLHSTMT     , 这是由游标 ...

  4. python windows环境下安装

    下载python安装包,双击安装后, 在cmd中输入python 若无反应, 在cmd设置环境变量 变量 : set PATH=C:\...\...\...[python的编译器的路径]:%PATH% ...

  5. html5-文本属性

    /*p{color: red;width: 50%;text-align: center;background: blue;}p{text-align: end;}p{text-align: end; ...

  6. html5-table布局

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  7. 【Hbase学习之五】HBase MapReduce

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-2.6.5 hbase-0.98.12.1-h ...

  8. 做一次面向对象的体操:将JSON字符串转换为嵌套对象的一种方法

    背景与问题 在 <一个略复杂的数据映射聚合例子及代码重构> 一文中,将一个JSON字符串转成了所需要的订单信息Map.尽管做了代码重构和配置化,过程式的代码仍然显得晦涩难懂,并且客户端使用 ...

  9. sqlyog下载

    sqlyog下载(附注册码):http://www.onlinedown.net/soft/24926.htm

  10. Django 创建项目流程

    django 项目创建流程 1 创建项目 cmd django-admin startproject 项目名称 pycharm file -- new project -- Django -- 项目名 ...