- 计数质数
难度简单400
统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
// a.去掉偶数
// b.去掉质数*质数
// 时间复杂度为O(n/2)*(n/2) O(n^2)
public int countPrimes(int n) {
int res = 0;
boolean [] b = new boolean[n];
if(n>2) res++; //计算上2
for(int i=3;i<n;i+=2){//去掉偶数
if(!b[i]){//是质数
for(int j=3;i*j<n;j+=2){ //质数乘以质数
b[i*j] = true;
}
res++;
}
}
return res;
}