问题

一个数到底是不是素数

别的

首先列一下我们可以求素数的东西

根号暴力求

\(O(nloglogn)\)的埃氏筛

\(O(n)\)的欧拉筛

还有我们要学习的Miller_Rabin算法

对了,还有神奇的6倍法(也许叫这个吧)

bool pd(int x) {
if(x==2||x==3) return 1;
if(x==1||x%6!=1&&x%6!=5) return 0;
for(int i=5;i*i<=x;i+=6)
if(x%i==0||x%(i+2)==0) return 0;
return 1;
}

正事

先去掉偶合数和2吧,现在剩下奇数了吧

费马小定理对素数一定成立,但合数是不一定成立的,多试几次成立几率还是挺

大的,没啥说的

\(Carmichael\)数本身是合数,而且\(1\)到\(n-1\)都满足飞马小定理,suah as:561

着重说一下二次探测吧

考虑\(x^{2}≡1(mod n)\)的根,如果n为奇素数,那跟就只有1和-1两个根(移项之后显然)

设\(n-1=2^{r}*d\),d是奇数,如果存在\(0≤k<r,a^{2^{k}*d}≠1,-1(mod n)\)

但是\(a^{2^{k+1}*d}≡1(mod n)\),那就不满足费马小定理,那么n就是合数了

凭借着二次探测和费马小定理,我们出错的几率就大大降低了

但只测一次错误还是不够(应该是一次失败的几率是四分之一)

我们用前10个素数,在OI界就可以无忧了

复杂度\(O(k*logn)\)

不知道百度百科搞得什么鬼,好多log

使用快速傅里叶变换能够将这个时间推进到\(O(klognlog lognlog log logn) ="O"(klogn).\)

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL q_pow(LL a, LL k, LL p) {//calc a^k % p
LL res = 1;
for (; k ; k >>= 1, a = a * a % p)
if (k & 1) res = a * res % p;
return res;
}
int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
bool detective(LL a, LL n) {
int r = 0; LL d = n - 1; // n - 1 = 2 ^ r * d
while (d % 2 == 0) d >>= 1, ++r;
for (LL x = q_pow(a, d, n), y; r ; r--) {
y = x * x % n;
if (y == 1) {
if (x == 1) return true;
if (x == n - 1) return true;
return false;
}
x = y;
}
return false;
}
bool miller_rabin(LL n) {
for (int i = 0; i < 10; i++) {
if (n == prime[i]) return true;
if (n % prime[i] == 0) return false;
if (!detective(prime[i], n)) return false;
}
return true;
}
int main() {
LL wo,n,x;
cin>>wo>>n;
while(n--) {
cin>>x;
if (miller_rabin(x)) printf("Yes\n");
else printf("No\n");
}
}

Miller_Rabin整理笔记的更多相关文章

  1. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  2. xmpp整理笔记:发送图片信息和声音信息

    图片和音频文件发送的基本思路就是: 先将图片转化成二进制文件,然后将二进制文件进行base64编码,编码后成字符串.在即将发送的message内添加一个子节点,节点的stringValue(节点的值) ...

  3. xmpp整理笔记:聊天信息的发送与显示

    任何一个信息的发送都需要关注两个部分,信息的发出,和信息在界面中的显示 往期回顾: xmpp整理笔记:环境的快速配置(附安装包)  http://www.cnblogs.com/dsxniubilit ...

  4. xmpp整理笔记:用户网络连接及好友的管理

    xmpp中的用户连接模块包括用户的上线与下线信息展现,用户登录,用户的注册: 好友模块包括好友的添加,好友的删除,好友列表的展示. 在xmpp中 负责数据传输的类是xmppStream,开发的过程中, ...

  5. xmpp整理笔记:xmppFramework框架的导入和介绍

    一个将要开发xmpp的项目,建议在项目刚创建就导入框架,这样可以避免一些自己操作失误造成不必要的损失. xmpp中最常用的框架就是 xmppFrameWork 往期回顾: xmpp整理笔记:环境的快速 ...

  6. jQuery整理笔记文件夹

    jQuery整理笔记文件夹 jQuery整理笔记一----jQuery開始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔 ...

  7. sk_buff整理笔记(两、操作函数)

    承接上一:sk_buff 整理笔记(一.数据结构)这一篇要讲的是内核为sk_buff结构提供的一些操作函数. 第一.首先要讲的是sk_buff中的四大指针: 四大指针各自是:head.data.tai ...

  8. element-ui 组件源码分析整理笔记目录

    element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...

  9. element-ui Carousel 走马灯源码分析整理笔记(十一)

    Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...

随机推荐

  1. Hotfix

    http://group.jobbole.com/6311/ http://www.jianshu.com/p/6f0ae1e364d9 http://www.mamicode.com/info-de ...

  2. 【2017-03-23】CSS基础:内联样式

    CSS:层叠式样式表 1.对层标签整体进行操作 <div style="width:200px;height:200px;background-color:blue"> ...

  3. MySql 应用语句

    [1]MySQL基础语句 -- 查询mysql版本号 SELECT VERSION(); -- 创建数据库 DROP DATABASE IF EXISTS study; -- 如果存在先删除 CREA ...

  4. (cvpr2019 ) Technology details of Deep Learning for Multiple-Image Super-Resolution

    Mutiple-Image SSR 关键的技术imformation fusion 1. 将单一场景的多图像经过Resnet, 其中每张图片的维度变为了输入的两倍.同时,这些输入的单一场景的多图像进行 ...

  5. ymPrompt,jcs缓存架构

    jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory#jcs.auxiliary. ...

  6. <转>jmeter(五)JDBC Request

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  7. Django框架----在Python脚本中调用Django环境

    在项目根目录下新建脚本文件script.py import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTI ...

  8. 原生js上传图片时的预览

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  9. javaweb项目中errorPage的问题

    我们的请求找不到时,会跳到错误页面,tomcat提供了一个错误页面,但是不太好.分析:tomcat自带错误页面不好的原因:有一下两点: 1.不好看: 2.不能为seo做出贡献.思考:如何解决以上问题? ...

  10. STM32开发 -- 4G模块开发详解(转)

    STM32开发 -- 4G模块开发详解(1) STM32开发 -- 4G模块开发详解(2) STM32开发 -- 4G模块开发详解(3) STM32开发 -- 4G模块开发详解(4)