线性筛

时间:2017-11-09 13:31:57   收藏:0   阅读:211
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
inline int read(){
    int num=0,f=1; char c=getchar();
    while(!isdigit(c)){if(c==-) f=-1; c=getchar();}
    while(isdigit(c)){num=(num<<1)+(num<<3)+(c^48); c=getchar();}
    return num*f;
}
#define maxn 10000001
bool prime[maxn+1];
inline int jud(int n){
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0){
            cout<<"NO"; return 0;
        }
    }
    cout<<"YES";
}
inline void dark(int n){
    for(int i=1;i<=n;i++)
      if(i&1) prime[i]=1;
    for(int i=3;i<=n;i+=2)
       if(prime[i])
         for(int j=i+i;j<=n;j+=i)
            prime[j]=0;
//    for(int i=2;i<=n;i++)
//       if(prime[i]) 
//         cout<<i<<" ";
   prime[2]=1; 
   prime[1]=0;
}
int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    dark(n);
    for(int i=1;i<=m;i++){
        int x;
        scanf("%d",&x);
        if(prime[x]) cout<<"Yes"<<\n;
        else cout<<"No"<<\n;
    }
}

 

原文:http://www.cnblogs.com/79707536wc/p/7808668.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!