Count the number of prime numbers less than a non-negative number, n.
思路: 移除每个质数的整数倍。
public class Solution {
public int countPrimes(int n) {
if(n <= 0)
return 0;
boolean[] isComposite = new boolean[n];
int cur = 2;
int count = 0;
while(cur < n){
count++;
moveOutComposite(cur, isComposite);
cur++;
while(cur < n && isComposite[cur]){
cur++;
}
}
return count;
}
//Move of every current number's composite
private void moveOutComposite(int cur, boolean[] isComposite){
for(int i = cur + cur; i < isComposite.length; i += cur){
isComposite[i] = true;
}
}
}