統計所有小於非負整數 n 的質數的數量。
示例:
輸入: 10
輸出: 4
解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。
思路:
埃拉託斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的算法:
要得到自然數n以內的全部素數,必須把不大於根號n的所有素數的倍數剔除,剩下的就是素數。
Java代碼:
class Solution {
public int countPrimes(int n) {
if (n <= 1) {
return 0;
}
//默認爲false
boolean[] isPrime=new boolean[n];
isPrime[0]=true;
isPrime[1]=true;
for (int i=2;i*i<n;i++){
if (!isPrime[i]) {
for (int j = i * 2; j < n; j += i) {
isPrime[j] = true;
}
}
}
//統計質數個數
int result=0;
for (boolean b:isPrime){
if (!b){
result++;
}
}
return result;
}
}