数论——线性筛素数(欧拉筛) 洛谷 3383

版权声明:低调地前行,越努力越幸运! https://blog.csdn.net/SSYITwin/article/details/83547356

P3383 【模板】线性筛素数

#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;
}

猜你喜欢

转载自blog.csdn.net/SSYITwin/article/details/83547356