埃氏筛素数也叫埃拉托斯特尼筛法,用于找出小于等于n的素数
主要思想:
1. 定义一个长度为n的布尔型数组,假设所有数都为素数
2. 0、1不是质数
3. 2是第一个素数,从2开始把该素数的倍数标记为合数,直到n的开方
4. 最后剩下的就都质数
int cntPrimes(int n)
{
bool x[n] = {};
int cnt = 0;
x[0] = x[1] = 1;
for(int i = 2; i <= n; i++)
{
if(x[i] == 0)
{
cnt++;
for(int j = 0; i*j <= n; j++)
{
x[i*j] = 1;
}
}
}
return cnt;
}