#include<stdio.h> #include<string.h> #include<cmath> #include<algorithm> #include<iostream> using namespace std; #define MAXPRME 100000 bool visit[MAXPRME+100]; int prime[MAXPRME]; //给定n,求所有<=n的素数 //对应prime数组下标为1-num(包括num); int init_prim(int n) { memset(visit,true,sizeof(visit)); int num=0; for(int i=2;i<=n;i++) { if(visit[i]==true) prime[++num]=i; for(int j=1;((j<=num)&&(i*prime[j]<=n));j++) { visit[i*prime[j]]=false; if(i%prime[j]==0) break; } } return num; } int main() { int n; while(cin>>n) { int nn=init_prim(n); cout<<nn<<endl; for(int i=1;i<=nn;i++) cout<<prime[i]<<endl; } return 0; }