质数检测一般都是根号n的写法 当然Mr判素数的方法可以实现log的复杂度2333

Mr判素数的话 我们根据费马小定理只要P是素数 那么另一个素数x 满足 x^P-1≡1(mod P)

同时 x^2%P==1 的解只有 x==1||x==P-1 可以利用这第二个式子做二次探测

利用 2 3 5 7 11 13 17 这七个素数可以保证int内正确性QAQ

当然记得判断2 3 5 7 11 13 17  因为费马小定理成立的条件是 x和P 互质

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int T,n;
int num[]={,,,,,,};
LL pmod(LL a,LL b,LL c){
LL ans=;
while(b){
if(b&) ans=ans*a%c;
b>>=; a=a*a%c;
}
return ans;
}
bool calc(LL x,LL P){
LL ly=P-,yy,last;
while(ly%==) ly/=;
last=yy=pmod(x,ly,P);
while(ly!=P-){
yy=yy*yy%P;
if(yy==&&last!=&&last!=P-) return ;
ly*=; last=yy;
}
return yy==;
}
bool pd(LL n){
if(n==||n==||n==||n==||n==||n==||n==) return ;
for(int i=;i<;i++)if(!calc(num[i],n)) return ;
return ;
}
int main(){
T=read();
while(T--){
n=read();
if(pd(n)) printf("Yes\n");
else printf("No\n");
}
return ;
}

51nod 1106 质数检测——Mr判素数的更多相关文章

  1. (数论 欧拉筛法)51NOD 1106 质数检测

    给出N个正整数,检测每个数是否为质数.如果是,输出"Yes",否则输出"No".   Input 第1行:一个数N,表示正整数的数量.(1 <= N &l ...

  2. 51nod 1106 质数检测

    #include <bits/stdc++.h> using namespace std; int n; ; bool s[maxn]; void is_prime() { memset( ...

  3. 51nod 1186 质数检测 V2

    1186 质数检测 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给出1个正整数N,检测N是否为质数.如果是,输出"Yes&quo ...

  4. 【51NOD-0】1106 质数检测

    [算法]数学 #include<cstdio> #include<cmath> bool ok(int x) { int m=(int)sqrt(x+0.5); ;i<= ...

  5. 51nod 1181 质数中的质数(质数筛法)

    题目链接:51nod 1181 质数中的质数(质数筛法) #include<cstdio> #include<cmath> #include<cstring> #i ...

  6. UVA10200-Prime Time/HDU2161-Primes,例题讲解,牛逼的费马小定理和欧拉函数判素数。

                                                    10200 - Prime Time 此题极坑(本菜太弱),鉴定完毕,9遍过. 题意:很简单的求一个区间 ...

  7. miller_rabin算法检测生成大素数的RSA算法实现

      import math from functools import reduce #用于合并字符 from os import urandom #系统随机的字符 import binascii # ...

  8. 【BZOJ-3667】Rabin_Miller算法 随机化判素数

    3667: Rabin-Miller算法 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 983  Solved: 302[Submit][Status ...

  9. 【Miller-Rabin随机判素数算法】

    实用性介绍: #include<bits/stdc++.h> #define go(i,a,b) for(int i=a;i<=b;i++) #define T 5 #define ...

随机推荐

  1. WPF+数据库+三层

    1.计算类 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac ...

  2. QT界面绘制学习记录

    1. MVC结构中,model必须作为类的成员变量存在,不可再函数内部申明.否则,会出现函数调用结束,model找不到的错误. 2.QcomboBox可设置为左边空白,右侧一小箭头的形式.代码:com ...

  3. iOS开发Interface Builder技巧

    1.使view的Size与view中的Content相适应:选中任意的一个view,然后Editor->Size to Fit Content,或者简单的按 ⌘=接着就会按照下面的规则对选中vi ...

  4. TCP系列35—窗口管理&流控—9、紧急机制

    一.概述 我们在最开始介绍TCP头结构的时候,里面有个URG的标志位,还有一个Urgent Pointer的16bits字段.当URG标志位有效的时候,Urgent Poinert用来指示紧急数据的相 ...

  5. win7系统日志分支删除方法

    这篇日志有问题,自己亲身尝试失败,这里只提供思路,谢谢(改天突破再做修改) 之前电脑装过德国的叫啥子软件来着,当时在系统自动创建了日志,后来软件卸载了,发现还是有这个日志主键,(我有强迫症)心里不爽, ...

  6. DEDE去掉会员登录及注册验证码的方法

    1.登录打开member/index_do.php 删除245-250行,即: if(strtolower($vdcode)!=$svali || $svali=='') { ResetVdValue ...

  7. [Redis]在Windows下的下载及安装

    1.下载 下载地址: https://github.com/MSOpenTech/redis, 下载并解压到特定的目录. 2.启动Redis服务端 CMD -> redis-server.exe ...

  8. [CLR via C#]基元类型

    一.什么是基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们.例如,可以使用以下语法来分配一个整数: System.Int32 a = new System.Int32() ...

  9. Android ListView各种效果实现总结,持续更新...

    一.ListView圆角:重写ListView的onInterceptTouchEvent方法,通过pointToPosition(x,y)方法判断当前点击位置所对应的项,有三种情况:分别是第一项.最 ...

  10. POJ1284:Primitive Roots——题解

    http://poj.org/problem?id=1284 给一个奇质数p,求p的原根数量. 有一个结论:当正整数n存在原根时,其一共有phi(phi(n))个不同余的原根. 所以答案为phi(p- ...