素数 "列挙" アルゴリズムを極めるスレ
■ このスレッドは過去ログ倉庫に格納されています
0324デフォルトの名無しさん
NGNG{ return tbl[bit>>3] & (1 << (bit &7));
}
void SetBit(unsigned char *tbl,unsigned int bit)
{ tbl[bit>>3] |= (1 << (bit &7));
}
unsigned char * MakePrime32bit( void )
{
const MAX3=0x55555555;
unsigned char * tbl = malloc(0x20010000/3);
unsigned int n=5;
memset(tbl,0,0x20010000/3);
while (n<0x10000){
if(! TestBits(tbl, n / 3) ){
unsigned x =(n*n)/ 3;
unsigned n2= 2*n ;
unsigned n1=(n/6)*4+3; printf("%5d\n",n);
while( x<MAX3){SetBit(tbl,x);SetBit(tbl,x+n1);x+=n2;}
}n+=2;
if(! TestBits(tbl, n / 3) ){
unsigned x =(n*n)/ 3;
unsigned n2= 2*n ;
unsigned n1=(n/6)*8+1; printf("%5d\n",n);
while( x<MAX3){SetBit(tbl,x);SetBit(tbl,x+n1);x+=n2;}
}n+=4;
}
return tbl;
}
■ このスレッドは過去ログ倉庫に格納されています