线性筛质数
#include<bits/stdc++.h>
#define maxn 100005
using namespace std;
int n,m;
int prime[maxn],v[maxn];
inline void primes(int n)
{
memset(v,0,sizeof(v));
m = 0;
for(int i=2;i<=n;i++)
{
if(v[i]==0)
{
v[i] = i;//最小质因子
prime[++m] = i;//存储质数
}
for(int j=1;j<=m;j++)
{
if(prime[j]>v[i] || prime[j]>n/i) break;//如果大于该数最小质因子/该数大于n 结束
v[i*prime[j]] = prime[j];
}
}
}
int main()
{
cin>>n;
primes(n);
for(int i=1;i<=m;i++) cout<<prime[i]<<endl;
return 0;
}