首先介绍欧拉筛:

//欧拉筛是通过最小质因子来筛质数的.
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
bool st[N];
int prime[N];
int main()
{
    int n;
    cin>>n;int cnt=0;
    for(int i=2;i<=n;i++)
    {
        if(!st[i]) prime[cnt++]=i;
        for(int j=0;prime[j]*i<=n;j++)
        {
            st[prime[j]*i]=true;
            if(i%prime[j]==0)  break;
        }
    }
    for(int i=0;i<cnt;i++)
    {
        printf("%d ",prime[i]);
    }puts("");
    return 0;
}