题目:计数质数
代码
JAVA:
//一个数如果只能被 1 和它本身整除,那么这个数就是素数/质数
class Solution {
public int countPrimes(int n) {
int result = 0;
boolean[] b = new boolean[n]; // 初始化默认值都为 false,为质数标记
if(2 < n) result++; // 如果大于 2 则一定拥有 2 这个质数
for(int i = 3; i < n; i += 2){ // 从 3 开始遍历,且只遍历奇数。
// 因为偶数肯定能被2整除就不是质数了,排除。(2除外)
if(!b[i]){ // 是质数
for(int j = 3; i * j < n; j += 2){
b[i * j] = true; // 将当前质数的奇数倍都设置成非质数标记 true
//一个数是质数,那么他的奇数倍肯定不是质数
}
result++; // 质数个数 +1
}
}
return result;
}
}