统计所有小于n的非负整数中的质数数量
顺序遍历时,每取得一个数(排除
0、
1),如果将它所有的倍数(排除
0、
1、本身)都清除,
那么剩下的数必为素数 该算法优点就是不用具体判断某一个数是不是质数 而是反其道行之
把所有不是质数的删掉剩下的自然就是质数了
需要一个最大的boolean数组来存 初始假设所有数都是质数
0 1不是质数
不是所有偶数都是不是质数 如
2就是质数。应该是所有除了
2以外的偶数都不是质数
int countPrimes(int n
) {
if(n
<=1) return 0;
bool flag
[n
];
for(int i
=2;i
<n
;i
++) flag
[i
]=true;
int count
=0;
for(int i
=2;i
<n
;i
++){
if(flag
[i
]==true) count
++;
int j
=i
+i
;
while(j
<n
){
flag
[j
]=false;
j
+=i
;
}
}
return count
;
}
计数质数还可以