Description:
Count the number of prime numbers less than a non-negative number, n.
思路:先排除掉2的倍数,再排除掉3的倍数。。。直到排除掉n-1的倍数。然后统计剩余元素的个数。其实a到sqrt(n)就可以了
class Solution {
public static int countPrimes(int n) {
if(n <= 1) return 0;
int[] index = new int[n];
index[0] = index[1] = 1;
int a = 2;
while(a < n){
while( a < n && index[a] == 1 ) a++;
for(int temp = a * 2 ; temp < n ;temp = temp + a ){
index[temp] = 1;
}
a++;
}
int result = 0;
for(int i = 2;i < n;i++){
if(index[i] == 0) {
result++;
}
}
return result;
}
}
大学时面试的一道题~