[板子]线性筛素数

线性筛素数,简称欧拉筛素数,可以在埃氏筛的基础上完爆埃氏筛

 1 #include<cstdio>
 2 int f[10000005];
 3 int prime[10000005];
 4 using namespace std;
 5 int main(){
 6     int n,m;
 7     scanf("%d%d",&n,&m);
 8     int tot=1;
 9     f[1]=1;
10     for(int i=2;i<=n;i++){
11         if(f[i]==0){
12             prime[tot]=i;
13             tot++;
14         }
15         for(int j=1;j<=n;j++){
16             
17             if(i*prime[j]>n){
18                 break;
19             }
20             
21             f[i*prime[j]]=1;
22             
23             if(i%prime[j]==0){
24                 break;
25             }
26         }
27     }    
28     for(int i=1;i<=m;i++){
29         int w;
30         scanf("%d",&w);
31         if(f[w]==1){
32             printf("No\n"); 
33         }else{
34             printf("Yes\n");
35         }
36     }
37     return 0;
38 }

 

posted @ 2017-11-10 08:30  Fylsea  阅读(135)  评论(0编辑  收藏  举报