Miller_Rabin 大素数判断
来源:互联网 发布:中超风云球员数据 编辑:程序博客网 时间:2024/04/28 21:30
满足费马定理公式的非素数不怎么多就是了。。。
然后这就是第一次筛选
然后就根据
二次探测定理
二次探测定理 如果p是一个素数,0<x<p,则方程x^2≡1(mod p)的解为x=1,p-1
然后就有一般步骤
0、先计算出m、j,使得n-1=m*2^j,其中m是正奇数,j是非负整数
1、随机取一个b,2<=b
2、计算v=b^m mod n
3、如果v==1,通过测试,返回
4、令i=1
5、如果v=n-1,通过测试,返回
6、如果i==j,非素数,结束
7、v=v^2 mod n,i=i+1
8、循环到5
好了 计算的时候要注意一下不要爆long long 我们用快速乘下面贴代码
#include<cstdio>#include<cstring>#include<ctime> #include<cstdlib>using namespace std;#define ll long longinline ll pow(ll a,ll b,ll mod){a%=mod;ll re=b,base=1,res=0,delta=a;while(re){if(re&base) re^=base,res+=delta,res%=mod;delta<<=1;delta%=mod;base<<=1;} return res;}ll sor(ll x,ll y,ll mod){if(x==1)return y;ll res=sor(x>>1,y,mod);res=pow(res,res,mod);if(x&1) return pow(res,y,mod); return res;}bool Check(ll pr){ll m,j; ll base=1,t=0; while(!(base&(pr-1))) t++,base<<=1; j=t; m=(pr-1)>>j; ll b=rand()%(pr-2)+1,v=sor(m,b,pr); if(v==1)return true; while(j--) { if(v==pr-1||v==1)return true; if(v<0) v++,v--; v=pow(v,v,pr); if(v<0) v++,v--; } return false;}char c;inline void read(ll&a){a=0;do c=getchar();while(c<'0'||c>'9');while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();}int main(){ll n,j;read(n);for(int i=1;i<=n;i++) read(j),printf(Check(j)||Check(j)||Check(j)?"YEs\n":"No\n");}
0 0
- Miller_Rabin 大素数判断
- Miller_Rabin 判断素数
- 判断素数(Miller_Rabin算法)
- zstu 2426 大范围内素数判断(这里用 Miller_Rabin 进行判定)
- SDNU 1490.Problem_H Miller_Rabin算法判断素数
- miller_rabin hdu 2138 判断是否是素数
- miller_rabin素数判断和pollard_rho的素数因子分解算法
- sdnu第一场选拔赛--Miller_Rabin算法判断是否为素数
- Miller_Rabin大素数测试与Pollard_rho整数分解模版
- Miller_Rabin大素数测试 与 Pollard_rho整数分解模版
- Miller_Rabin素数测试
- Miller_Rabin素数测试
- Miller_Rabin素数测试
- Miller_Rabin素数测试
- Miller_Rabin素数测试
- 改进Miller_rabin素数测试
- Miller_rabin素数检验[HDU5391]
- Miller_rabin 测试素数
- error LNK2001: 无法解析的外部符号 "__declspec(dllimport)
- [leetcode] 102. Binary Tree Level Order Traversal 解题报告
- 网络抓取页面乱码
- Python爬虫学习系列教程
- android音乐播放器,可进度条调节
- Miller_Rabin 大素数判断
- C++ 右值引用
- 【AC自动机】hdu2222 hdu2896 hdu3065 zoj3430 poj2778 hdu2243
- 最大连续和(分治法)
- linux 每次关机后重启都要手动source /etc/profile
- 关于控件getWidth和getHeight方法都为0的解释及解决方法
- leetcode刷题日记——Linked List Cycle
- Java之美[从菜鸟到高手演变]系列之博文阅读导航
- Java中 FileReader的中文乱码问题