N次剩余

给定 \(N,a,P\),且 \(P\) 最好为质数
可以算出 \(x^N\equiv a(mod~p)\) 的解
首先可以算出 \(P\) 的原根 \(g\)
解方程 \(g^y\equiv b(mod~p)\),这个直接 \(BSGS\)
设 \(g^z\equiv x(mod~p)\)
那么 \(g^{za}=g^y(mod~p)\iff za\equiv y(mod~\varphi(p))\),这个直接 \(exgcd\)
无解在 \(BSGS\) 和 \(exgcd\) 的时候判掉,最后快速幂得到答案

二次剩余

求 \(x^2\equiv n(mod~p)\)的一个解 \(x\),其中 \(p\) 为一个奇素数

有二次剩余的条件

\[n^{\frac{p-1}{2}} \equiv 1(mod~p)\]

证明

首先有 \(n^{p-1}\equiv 1(mod~p)\)
若存在一个解 \(a\),那么 \(a^{p-1}\equiv 1(mod~p)\) 且 \(a^{2}\equiv n(mod~p)\)
所以
\[a^{p-1}\equiv n^{\frac{p-1}{2}}\equiv 1(mod~p)\]

算法一

如果 \(g\) 为 \(p\) 的原根,且 \(g^{a}\equiv n(mod~p)\) 那么解就是 \(g^{\frac{a}{2}}\)

证明

结合上面的条件,有 \(g^{a\frac{p-1}{2}}\equiv 1(mod~p)\)
因为 \(g^{p-1}\equiv 1(mod~p)\),那么 \(a\) 一定为偶数
可以在 \(\Theta(\sqrt{p})\) 的复杂度内找到解

算法二

随机一个数字 \(a\)
使得 \(a^2-n\) 不存在二次剩余,期望次数为 \(2\)
定义一个新的数域,设 \(\omega = \sqrt{a^2-n}\) (类似于 \(i=\sqrt{-1}\))
那么所有的数都可以表示为 \(a+b\omega\) 的形式
根据有解的条件可以得到
\[\omega^{p-1}\ne 1(mod~p)\]
而 \(\omega^{2(p-1)}\equiv 1(mod~p)\) 所以 \(\omega^{p-1}\equiv -1(mod~p)\)

定理 \((a+\omega)^{p}=a-\omega\)

证明

二项式定理展开得到 \(\sum_{i=0}^{p}\binom{p}{i}a^i\omega^{p-i}\)
显然除了第 \(0\) 项和第 \(p\) 项的组合数不是 \(p\) 的倍数
那么就是 \(a^p+\omega^{p}\)
由于 \(a^{p-1}\equiv 1(mod~p)\) 且 \(\omega^{p-1}\equiv -1(mod~p)\)
那么得到 \(a^p+\omega^{p}=a-\omega\)

这就好了,因为 \((a-\omega)(a+\omega)=a^2-\omega^2=n\)
所以 \((a+\omega)^{\frac{p+1}{2}}\equiv \sqrt{n}(mod~p)\)
现在只要证明 \((a+\omega)^{\frac{p+1}{2}}\) 不存在 \(\omega\) 项就好了
假设 \((a+\omega)^{\frac{p+1}{2}}=x+y\omega\)
那么 \((x+y\omega)^2=n\)
所以 \(x=0\) 或者 \(y=0\)
如果 \(x=0\) 且 \(y\ne0\),那么 \((x+y\omega)^2=y^2(a^2-n)=n\)
因为 \(a^2-n\) 没有二次剩余,而 \(y^2\) 显然有二次剩余
所以 \(n\) 没有二次剩余,矛盾
得到 \(y= 0\)

总结一下

第一步随机一个 \(a\),使得\(a^2-n\) 不存在二次剩余
第二步直接重载运算求出 \((a+\omega)^{\frac{p+1}{2}}\) 即 \(n\) 的二次剩余

N次剩余和二次剩余的更多相关文章

  1. OI数学汇总

    最前面:\(\LaTeX\)可能需要加载一会,请耐心等待o~ 前言 数学在\(\text{OI}\)中十分重要.其中大多都是数论. 什么是数论? \[ 研究整数的理论 --zzq \] 本文包含所有侧 ...

  2. 数学:二次剩余与n次剩余

    二次剩余求的是这个东西 如果给定x,再给定若干个大的质数p,如果结果a相同,那么x是完全平方数? 给出别人的二次剩余的代码: /*poj 1808 题意: 判断平方剩余,即判断(x^2)%p=a是否有 ...

  3. 二次剩余、三次剩余、k次剩余

    今天研究了一下这块内容...首先是板子 #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. android计算每个目录剩余空间丶总空间以及SD卡剩余空间

    ublic class MemorySpaceCheck { /** * 计算剩余空间 * @param path * @return */ public static String getAvail ...

  5. Windows - 性能监控之磁盘剩余空间大小警报

    开始 -> 运行 -> 键入命令 perfmon.msc 数据收集器(Data Collector Sets) -> 用户自定义(User Defined)

  6. SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)

    需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...

  7. css实现div的高度填满剩余空间

    css实现div的高度填满剩余空间 .top{ width: 100%; height: 70px;} .bottom{background-color: #cc85d9;width: 100%;po ...

  8. 如何实现textarea中获取动态剩余字数的实现

    工作中遇到一个案例,之前没有写过,今儿啃了半个下午硬是给写出来,灰常又成就感!当然对于js大牛来说这根本不算啥,但是对于我自己的js能力又向前迈出一小步. 案例介绍:我们常见到有的网站有textare ...

  9. sql 查询服务器硬盘剩余空间

    DECLARE @tb1 Table( drive varchar(20), [MB 可用空间] varchar(20)) INSERT INTO @tb1 Exec master.dbo.xp_fi ...

随机推荐

  1. Java中类变量和实例变量的初始化

    1. 类变量和实例变量 类变量即类成员变量中的静态变量,它们可以通过类名来直接访问. 实例变量是类成员变量中的非静态变量,只有在实例化对象之后通过对象来访问. 2. 空间分配的时间不同 类变量是在类加 ...

  2. 基于Django+celery二次开发动态配置定时任务 ( 二)

    一.需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args.kwargs字段里,并且是json格式.那么,当定时任务多了 ...

  3. IDEA 笔记汇总

    Intellij IDEA 像eclipse那样给maven添加依赖 Intellij idea maven 引用无法搜索远程仓库的解决方案 Intellij IDEA 封装Jar包(提示错误: 找不 ...

  4. (一)Audio子系统之AudioRecord.getMinBufferSize

    在文章<基于Allwinner的Audio子系统分析(Android-5.1)>中已经介绍了Audio的系统架构以及应用层调用的流程,接下来,继续分析AudioRecorder方法中的ge ...

  5. centos 6.6 设备 xxx 似乎不存在, 初始化操作将被延迟

    2019-04-02 问题描述: centos 6.6开启虚拟机之后,网卡服务不能正常启动,报错信息为:设备 xxx(网卡名称)似乎不存在, 初始化操作将被延迟 解决办法: 清空70-persiste ...

  6. excel 正则表达式用法

    Private Sub RegEx_Replace()        Dim myRegExp As Object      Dim Myrange As Range, C As Range      ...

  7. PHP 对字符串 进行填充

    1.str_pad — 使用另一个字符串填充字符串为指定长度 . 我觉得str_pad可以满足普通的数字,字符串的简单填充. string str_pad ( string $input , int ...

  8. Ubuntu14.04下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)

    不多说,直接上干货! 写在前面的话 (1) 最近一段时间,因担任我团队实验室的大数据环境集群真实物理机器工作,至此,本人秉持负责.认真和细心的态度,先分别在虚拟机上模拟搭建ambari(基于CentO ...

  9. C 标准库 - string.h之memcpy使用

    memcpy Copy block of memory Copies the values of num bytes from the location pointed to by source di ...

  10. HDU 2191 悼念512汶川大地震遇难同胞

    悼念512汶川大地震遇难同胞 急!灾区的食物依然短缺!  为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格 ...