对于2 000 000 000 以内判断是否是素数 筛选法+暴力

来源:互联网 发布:网络攻防技术pdf 编辑:程序博客网 时间:2024/05/01 07:59
#include<iostream>#include<cmath> #define N 50001using namespace std;bool isprime[N];int prime[N],nprime;void doprime(){long long i,j;nprime=0;memset(isprime,true,sizeof(isprime));isprime[1]=0;for(i=2;i<N;i++){if(isprime[i]){prime[++nprime]=i;for(j=i*i;j<N;j+=i)isprime[j]=false;}}}bool isp(int n){int i,k=(int)sqrt(double(n));for(i=1;prime[i]<=k;i++)if(n%prime[i]==0)return 0;return 1;}int main(){doprime();long long n;while(cin>>n){if(n==1){cout<<"NO"<<endl;continue;}if(n>N){if(isp(n))cout<<"YES"<<endl;elsecout<<"NO"<<endl;}else{if(isprime[n])cout<<"YES"<<endl;elsecout<<"NO"<<endl;}}return 0;}


 

原创粉丝点击