判断是否为素数

来源:互联网 发布:淘宝招儿童平面小模特 编辑:程序博客网 时间:2024/06/05 15:20
#include"iostream"using namespace std;long long pow_mod(long long a,long long i,long long n){if(i==0) return 1;int temp=pow_mod(a,i>>1,n);temp=temp*temp%n;if(i&1) temp=( long long ) temp*a%n;return temp;}bool test(int n,int a,int d){if(n==2) return true;if(n==a) return true;if((n&1)==0) return false; //n是偶数while(!(d&1)) d=d>>1;  //当d为奇数进行int t=pow_mod(a,d,n);while((d!=n-1)&&(t!=1)&&(t!=n-1)){t=(long long) t*t%n;d=d<<1;}return (t==n-1||(d&1)==1);}bool isprime(int n){if(n<3) return false ;int a[]={2,3,61};for(int i=0;i<=2;i++)if(!test(n,a[i],n-1))return false;return true;}int main(){int n;while(cin>>n){if(n==2) cout<<"YES\n";else{if(isprime(n))cout<<"YES\n";else cout<<"NO\n";}}return 0;}

0 0
原创粉丝点击