【算法模板】欧拉筛法求素数

#include<iostream>

using namespace std;

const int MAXN=1000000+10;

int n,cnt,prime[MAXN];
bool vis[MAXN];

void findprime(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(!vis[i])prime[++cnt]=i;
        for(int j=1;j<=cnt&&i*prime[j]<=n;j++)
        {
            vis[i*prime[j]]=true;
            if(i%prime[j]==0)break;
        }
    }
}

int main()
{
    vis[1]=true;
    findprime(MAXN);
    cin>>n; 
    if(!vis[n])cout<<"Yes";
    else cout<<"No";
    return 0;
}

猜你喜欢

转载自blog.csdn.net/ezluoyiqi/article/details/82957607