二次剩余-Cipolla

二次剩余 \(Cipolla\) 算法

概述

  • 大概就是在模 \(p\) 意义下开根号,如求解方程\(x^2\equiv n(mod\ p)\).
  • 这里只考虑 \(p\) 为素数的情况.若 \(p=2\) ,则\(x=0\ when\ n=0,x=1\ when\ n=1\).
  • 若 \(p?\) 为奇素数,定义勒让德符号:

\[
\lgroup\frac{n}{p}\rgroup =n^{\frac{p-1}{2}}
\]

  • 则根据欧拉准则,

\[
\lgroup \frac{n}{p} \rgroup \equiv
\left\{
\begin{array}{lr}
1,\ n是p的二次剩余,\ -1,\ n不是p的二次剩余,\ 0,\ x\equiv 0.
\end{array}\ (mod\ p)
\right.
\]

  • 对于 \(\lgroup \frac{n}{p} \rgroup \equiv 1\) 的情况,我们随机取一个 \(a\) 使得 \(a^2-n\) 不为 \(p\) 的二次剩余,可证期望步数为 \(2\) .
  • 记 \(\omega=\sqrt{a^2-n}?\) ,定义一个新数域\(x+y\cdot\ \omega?\),类似于复数,只是单位复数为\(\omega?\).
  • 那么 \(x\equiv \pm (a+\omega)^{\frac{p+1}{2}}\ (mod\ p)\),据拉格朗日定理可知虚数部分系数为 \(0\) .
  • 简要论证,尝试倒推变形,

\[
x\equiv \pm (a+\omega)^{\frac{p+1}{2}}\x^2\equiv (a+\omega)^{p+1}\x^2\equiv (a+\omega)^p(a+\omega)
\]

  • 注意到 \((a+\omega)^p\) 可用二项式定理展开,\((a+\omega)^p\equiv \sum_{i=0}^{p}C_p^i a_i \omega ^{a-i}\ (mod\ p)\).
  • \(p\) 是个质数,.使用 \(Lucas\) 定理处理组合数,发现仅当\(i=0,i=n\)时组合数在模意义下才为非 \(0\) 的,仅计算\(i=0,i=n\),可得到\((a+\omega)^p\equiv a^p+\omega ^p\ (mod\ p)\).
  • 得到这个式子后,继续对上面的式子变形,

\[
x^2\equiv (a+\omega)^p(a+\omega)\x^2\equiv (a^p+\omega^p)(a+\omega)
\]

  • 注意到\(a^p\equiv a\) (费马小定理),而\(\omega ^p\equiv \omega * \omega^{p-1} \equiv \omega*(\omega ^2)^{\frac{p-1}{2}}\equiv \omega*(a^2-n)^{\frac{p-1}{2}}\equiv -\omega\).
  • 继续变形,

\[
x^2\equiv (a^p+\omega^p)(a+\omega)\x^2\equiv(a-\omega)(a+\omega)\x^2\equiv a^2-\omega^2\x^2\equiv a^2-(a^2-n)\x^2\equiv n\ (mod\ p).
\]

  • 这里的变形操作容易验证都是可逆的,可以一步一步推回去,就说明了有两个解,\(x\equiv \pm (a+\omega)^{\frac{p+1}{2}}\ (mod\ p)\).
  • 时间复杂度为\(O(log^2p)\).

原文地址:https://www.cnblogs.com/jklover/p/10509922.html

时间: 2024-08-01 20:09:30

二次剩余-Cipolla的相关文章

二次剩余 Cipolla算法

欧拉准则 \(a\)是\(p\)的二次剩余等价于\(a^{\frac{p-1}{2}}\equiv 1\pmod p\),\(a\)不是\(p\)的二次剩余等价于\(a^{\frac{p-1}{2}}\equiv -1\pmod p\). Cipolla 若\(a^2-n\)不是\(p\)的二次剩余,则\(p\)的二次剩余为\((a+\sqrt{a^2-n})^\frac{p+1}{2}\). 因此我们随机\(a\)即可.\(\sqrt{a^2-n}\)的计算用复数. 时间复杂度约为\(O(\l

二次剩余&&Cipolla

目录 二次剩余 勒让德符号(legendre symbol) Cipolla's Algorithm. 代码 end 二次剩余 给定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\equ

常用/常考算法总结

转自tangjz的博客... 基础算法 模拟 搜索 广度优先搜索(BFS) 优化:双向BFS 深度优先搜索(DFS) 优化:折半DFS 迭代加深搜索(IDS) 启发式搜索(Astar) 优化:IDAstar 优化:剪枝.位运算 排序 冒泡排序/选择排序 基数排序/桶排序 计数排序 插入排序/希尔排序 快速排序 归并排序/求逆序对数 堆排序 贪心 分治 二分/三分/n分 cdq分治 倍增/ST 离散化 二分答案 快速幂/十进制快速幂 基础数学 数列求和 泰勒展开 矩阵 矩阵乘法 高斯消元 判断线性

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

二次剩余定义: 在维基百科中,是这样说的:如果q等于一个数的平方模 n,则q为模 n 意义下的二次剩余.例如:x2≡n(mod p).否则,则q为模n意义下的二次非剩余. Cipolla算法:一个解决二次剩余强有力的工具,用来求得上式的x的一个算法. 需要学习的数论及数学基础:勒让德符号.欧拉判别准则和复数运算. 勒让德符号:判断n是否为p的二次剩余,p为奇质数. 欧拉定理为xφ(p)≡1(mod p) 当p为素数时,可知φ(p)=p-1,转化为xp-1≡1(mod p) 开根号后为 x(p−1

【数论】【二次剩余】【map】hdu6128 Inverse of sum

部分引用自:http://blog.csdn.net/v5zsq/article/details/77255048 所以假设方程 x^2+x+1=0 在模p意义下的解为d,则答案就是满足(ai/aj) mod p = d的数对(i,j)的数量(i<j). 现在把问题转化为解这个模意义下的二次方程. x^2+x+1=0 配方:x^2+x+1/4+3/4=0 (x+1/2)^2+3/4=0 同乘4:(2x+1)^2+3=0 即(2x+1)^2=-3 (mod p) 换句话说,我们必须保证-3+p是p

HDU6128 二次剩余/二次域求二次剩余解/LL快速乘法取模

LINK 题意:求满足模p下$\frac{1}{a_i+a_j}\equiv\frac{1}{a_i}+\frac{1}{a_j}$的对数,其中$n,p(1\leq n\leq10^5,2\leq p\leq10^{18})$ 思路:推式子,两边同乘$(a_i + a_j)^3$,得$a_i^2+a_j^2 \equiv {a_i·a_j} \mod{p}$,进一步$a_i^2+a_j^2+a_i·a_j\equiv {0} \mod{p}$,然后?然后会点初中数竞,或者数感好会因式分解就能看出

Cipolla算法学习小记

转自:http://blog.csdn.net/doyouseeman/article/details/52033204 简介 Cipolla算法是解决二次剩余强有力的工具,一个脑洞大开的算法. 认真看懂了,其实是一个很简单的算法,不过会感觉得出这个算法的数学家十分的机智. 基础数论储备 二次剩余 首先来看一个式子x2≡n(modp),我们现在给出n,要求求得x的值.如果可以求得,n为mod p的二次剩余,其实就是n在mod p意义下开的尽方.Cipolla就是一个用来求得上式的x的一个算法.

Codechef:Fibonacci Number/FN——求通项+二次剩余+bsgs

题意 定义 $F_n$ 为 $$F_n = \left\{\begin{matrix}0, n=0\\ 1, n=1 \\F_{n-1} + F_{n-2}, n > 1\end{matrix}\right.$$ 现给你一个素数 $p$ 和一个非负整数 $C$,你需要最小的非负整数 $n$,使得 $F_n \equiv C (mod \ p)$. 分析 因为题目保证 $p \ mod \ 10$ 是一个完全平方数,也就是说 $p \ mod \ 5$ 等于1或-1,即5是模$p$ 的二次剩余(据

ZOJ 3774 二次剩余

LINK 题意:简单粗暴,求菲波那契数列每个数的m次的前n项和模1e9+7 思路:斐波那契通项式, 注意到有很多根号5,求二次剩余为5模1e9+7的解,显然我们可以直接找一个(383008016),然后拿来替代根号5,然后优化下,把中括号中共轭的两部分预处理下,然后由于是外部的一个指数m,从1枚举到m,来求二项式定理的每项系数,再用个逆元就好了.人家的校赛题( /** @Date : 2017-03-18-15.39 * @Author : Lweleth ([email protected])