計數質數 -leetcode java

統計所有小於非負整數 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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章