Description:
Count the number of prime numbers less than a non-negative number, n.
Solution:
可以用筛法求素数。
先用2把所有2的倍数去掉,3把所3的倍数去掉,依此类推。
这道题目出的不是特别好,因为n如果太大,筛法也是不可行的,首先数组就没办法开那么大。
import java.util.*;
public class Solution {
public int countPrimes(int n) {
if (n <= 2)
return 0;
boolean isPrime[] = new boolean[n];
Arrays.fill(isPrime, true);
isPrime[2] = true;
for (int i = 2; i < n; i++) {
if (isPrime[i])
for (int j = 2; i * j < n; j++)
isPrime[i * j] = false;
}
int count = 0;
for (int i = 2; i < n; i++)
if (isPrime[i])
count++;
return count;
}
}