线筛
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
bool b[1000010];
int prime[100010],point;
int n;
int main()
{
scanf("%d",&n);
b[0]=b[1]=1;
for(int i=2;i<=n;i++)
{
if(!b[i])
prime[++point]=i;
for(int j=1;j<=point;j++)
{
if(i*prime[j]>n)break;
b[i*prime[j]]=1;
if(i%prime[j]==0)break;//如果i是prime[j]的倍数,那么在筛i时已经筛过prime[j]的倍数了,所以跳出
}
}
for(int i=1;i<=point;i++)printf("%d ",prime[i]);
}