从TopCoder学来的一段代码,很简炼的说。特录之以为志。
质数筛选器
const
int
MAX_NUM
=
100001
;
unsigned char isPrime[MAX_NUM];
void GetPrime ( void )
{
memset(isPrime, 1 , sizeof (isPrime));
isPrime[ 0 ] = isPrime[ 1 ] = 0 ;
for ( int i = 2 ; i * i < MAX_NUM; i ++ )
if (isPrime[i])
for ( int j = i * i; j < MAX_NUM; j += i)
isPrime[j] = 0 ;
}
unsigned char isPrime[MAX_NUM];
void GetPrime ( void )
{
memset(isPrime, 1 , sizeof (isPrime));
isPrime[ 0 ] = isPrime[ 1 ] = 0 ;
for ( int i = 2 ; i * i < MAX_NUM; i ++ )
if (isPrime[i])
for ( int j = i * i; j < MAX_NUM; j += i)
isPrime[j] = 0 ;
}