Description:
Count the number of prime numbers less than a non-negative number, n.
分析:返回n范围内素数的个数
解题思路:使用打表法,找出1~n中的素数,之后遍历统计。以空间换时间。
打表思路:判断当前数是否为素数,从2开始。如果当前数为素数,则count++。内层循环当前素数乘之后必定为非素数,循环结束条件i*j
public static int countPrimes2(int n){
//初始化后默认是false
boolean[] isComposite = new boolean[n];
int count = 0;
for(int i=2;i<n;i++){
if(!isComposite[i]){
//当前数为素数,不为组合数
count++;
for(int j=2;i*j<n;j++){
isComposite[i*j] = true;
}
}
}
return count;
}