筛选法求素数
#include <iostream>
#include <string.h>
#define size 2000010
using namespace std;
bool visit[size];
int isprime[size];
void getprime()
{
int cs(0);
memset(visit,0,sizeof(visit));
visit[0]=visit[1]=1;
for(int i=2;i*i<size;i++)
if(!visit[i])
for(int j=i*i;j<size;j+=i)
visit[j]=1;
for(int i=0;i<size;i++)
if(!visit[i])
isprime[cs++]=i;
}
int main()
{
int t;
getprime();
while(cin>>t,t)
{
for(int i=0;isprime[i]<=t;i++)
if(!i) cout<<isprime[i];
else cout<<" "<<isprime[i];
cout<<endl;
}
return 0;
}