Leetcode刷題java之204. 計數質數(一天一道編程題之第二十一天)

執行結果:

通過

顯示詳情

執行用時 :14 ms, 在所有 Java 提交中擊敗了80.36% 的用戶

內存消耗 :39.5 MB, 在所有 Java 提交中擊敗了16.23%的用戶

題目:

統計所有小於非負整數 n 的質數的數量。

示例:

輸入: 10
輸出: 4
解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/count-primes
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

思路:

創建一個boolean數組,用排除法,倍數不是質數。

優化:外層循環到開方,內層循環從平方開始

代碼:

class Solution {
    public int countPrimes(int n) {
        boolean[] isprime=new boolean[n];
        for(int i=2;i*i<=n;i++)
        {
            if(!isprime[i])
            {
                for(int j=i*i;j<n;j+=i)
                {
                    isprime[j]=true;
                }
            }
        }
        int result=0;
        for(int i=2;i<n;i++)
        {
            if(!isprime[i])
            {
                result++;
            }
        }
        return result;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章