#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define MAXSIZE 10000000
int prim[MAXSIZE+5];
void fun()
{
memset(prim,0,sizeof(prim));
prim[0]=prim[1]=1;
for(int i=4;i<=MAXSIZE;i+=2)//先将偶数筛掉
{
prim[i]=1;
}
double t=sqrt(MAXSIZE);//记住t为double型
for(int i=3;i<=t;i+=2)
{
if(!prim[i])//一个优化,只有素数才进行以下筛选 。
{
int k=i*i,p=i+i;//每次都是从k筛起,因为前面的都已近筛过了。每次加2i才仍旧为奇数。
for(int j=k;j<=MAXSIZE;j+=p)
{
prim[j]=1;
}
}
}
}
int main()
{
fun();
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
if(!prim[i])
printf("%d\n",i);
}
}
//system("pause");
return 0;
}