素数测试
来源:互联网 发布:小灰狼打印软件注册码 编辑:程序博客网 时间:2024/05/19 18:13
素性测试是检验一个给定的数n是否是素数的判定方法。
这个问题不被认为是NP完全的,我们可以给出一个多项式时间算法。如果这个算法所得到的结论显示这个数不是素数,那么这个数肯定不是素数;如果这个结论显示这个数是素数,那么这个数将会有接近百分之100的概率是素数。换言之,对于结果显示的是素数的这个数,可能并不是素数。
其算法的核心是费马定理:如果p是素数,且0<x<p,那么
如果p是素数,且0<x<p,那么x*x≡1(mod p)仅有的两个解是X=1,p-1
#include<iostream>using namespace std;int witness(int a,int i,int n){ int x,y; if(i==0) return 1; x=witness(a,i/2,n); if(x==0) return 0; y=(x*x)%n; if(y==1&&x!=1&&x!=n-1) return 0; if(y%2!=0) y=(a*y)%n; return y;}bool IsPrime(int n){ return witness(n/2,n-1,n)==1;}int main(){ int n; cin>>n; if(IsPrime(n)) { cout<<"是素数"<<endl; } else cout<<"不是素数"<<endl;}
0 0
- 素数测试
- 素数测试
- 素数测试
- 素数测试
- 素数测试
- 素数测试
- 素数测试
- Miller_Rabin素数测试
- 随机算法 素数测试
- 素数与素性测试
- Miller - Rabin素数测试
- 大素数测试
- 素数的Miller_Rabbin测试
- 素数判定--米勒测试
- 大素数“测试”
- Miller-Rabin素数测试
- Miller Rabbin测试素数
- Miller_Rabin素数测试
- win10中卸载了ie浏览器重新安装后不能打开的问题
- 蓝桥杯:猜字母
- 在linux上部署dubbo服务jar包
- ECS ubuntu 16.04初始机安装Oracle java8
- C++实验6
- 素数测试
- 条款6:若不想使用编译器自动生成函数,就该明确拒绝
- 【HDU6024】Building Shops(简单dp)
- Linux之tcpdump使用
- awk命令个人总结(以CentOS 6.3环境下shell为例)
- 安卓代码优化(事件篇)
- Maven手动添加本地仓库
- 【转载】----Java进阶资源汇总
- 希尔排序算法