首页 > 代码库 > 利用筛法求素数表

利用筛法求素数表

利用筛法求素数表

const int Max = 1e6 + 50;
int isPrime[Max];<span style="white-space:pre">	</span>//素数判断结果表
int tblPrime[Max];<span style="white-space:pre">	</span>//所求得的素数表
int lenPrimes;<span style="white-space:pre">	</span>//所求得的素数表的长度(个数)

void initTblOfPrime()
{
	memset(isPrime, 1, sizeof(isPrime));
	isPrime[0] = isPrime[1] = 0;
	for(int i = 2; i < sqrt(Max*1.0); i ++)
	{
		if(isPrime[i]){
			for(int j = i*i; j < Max; j += i)
			{
				isPrime[j] = 0; 
			}
		}
	}
	lenPrimes = 0;
	for(int i = 2; i < Max; i ++)
	{
		if(isPrime[i])	tblPrime[lenPrimes++] = i;
	}
}