//筛法是把不是素数的数标记掉,因此先要默认全为素数,先打表,不要每次打表 #include<stdio.h> #include<math.h> #include<string.h> #define N 2000001 int visit[N]; void shaifa() { int i,j; int m=(int)(sqrt(N)+0.5); memset(visit,0,sizeof(visit)); for(i=2;i<m;i++) if(!visit[i])//是素数 { for(j=2*i;j<N;j+=i) visit[j]=1; } } int main() { int T,i;int ans; shaifa(); while(scanf("%d",&T),T) { for(i=2;i<=T;i++) if(visit[i]==0) printf("%d ",i); printf("\n"); } return 0; }