/* Prime number generator. Generates all primes less than a command line */
/* parameter or 2^32 by default, output them on stdout. */
#include
#include "primetab.cc"
#include
/*ARGSUSED*/
int main (int argc, char **argv)
{
long unsigned ixt[sizeof(primetable)>>2],*ix,i,j,nsp,n=0,max,m;
char sieve[1<<17],*sp;
if(argv[1]){
max=atoi(argv[1]);
for(nsp=0;primetable[nsp]<=(unsigned)sqrt(max);nsp++);}
else{nsp=sizeof(primetable)>>2;max=0xffffffff;};
printf("%u\n",2);
for(i=0;i>1)+(1<<17);
for(j=0;j<1<<14;j++){
memset(sieve,1,1<<17);
for(ix=ixt+nsp-1;ix>=ixt;ix--)
for(*ix-=1<<17;*ix<1<<17;*ix+=*(primetable+(ix-ixt)))
sieve[*ix]=0;
for(i=0;i<(1<<17);i++)if(sieve[i])
{if((m=((j<<17)+i)<<1)>max)return 0;
else if(m>2)printf("%ld\t",m-1);/*n++;*/}
}
}