1. 程式人生 > >數論——線性篩素數(尤拉篩) 洛谷 3383

數論——線性篩素數(尤拉篩) 洛谷 3383

#include<iostream>
using namespace std;
const int maxn=1e7+6;
int n,m;
int flag[maxn];
int p[maxn];
void getPrime(int n)
{
	int r=0;
	for(int i=2;i<=n;i++)
    {
        if(flag[i]==0)
        p[++r]=i;
        for(int j=1;j<=r;j++)
        {
            if(i*p[j]>n) break;
            flag[i*p[j]]=1;//任意一個合數是一個質數與一個數的積 
        }
    }
}
int main()
{
    cin>>n>>m;
    getPrime(n);
    flag[1]=1;//0不是質數 
    flag[0]=1;//1不是質數 
    for(int i=1;i<=m;i++)
    {
        int x;
        cin>>x; 
        if(flag[x]==0) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}