1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<algorithm>
6 using namespace std;
7
8 int prime[1000000];
9 int vis[1000000];
10 int normal_sieve(int n)
11 {
12 memset(vis,0,sizeof(vis));
13 int cnt=0;
14 int tmp=(int)sqrt(1.0*n);
15 for(int i=2;i<=tmp;i++)
16 {
17 if(!vis[i])
18 {
19 prime[cnt++]=i;
20 for(int j=i;j<=n;j+=i)
21 vis[j]=1;
22 }
23 }
24 for(int i=tmp;i<=n;i++)
25 if(!vis[i])
26 prime[cnt++]=i;
27 return cnt;
28 }
29 //欧拉素数筛;
30 int Find_prime(int N)
31 {
32 int cnt=0;
33 memset(vis,0,sizeof(vis));
34 for(int i=2;i<=N;i++)
35 {
36 if(!vis[i])
37 prime[cnt++]=i;
38 for(int j=0;j<cnt;j++)
39 {
40 if(i*prime[j]>N)
41 break;
42 vis[i*prime[j]]=1;
43 if(i%prime[j]==0)
44 break;
45 }
46 }
47 return cnt;
48 }
49 int main()
50 {
51 int n;
52 while(scanf("%d",&n)!=EOF && n)
53 {
54 int cnt=Find_prime(n);
55 for(int i=0;i<cnt;i++)
56 printf("%d ",prime[i]);
57 printf("\n");
58
59 }
60 return 0;
61 }