leetcode 204 計數質數 java

2021-09-02 23:46:20 字數 638 閱讀 9362

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

示例:

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

暴力求解是不行的,超出時間限制;利用篩法:

1、如果要實現篩法,需要乙個o(n)的陣列來儲存每乙個數是不是素數,暫定為true,篩選,把不是素數的定為false,最終陣列裡為true的就是所有的素數了。如何篩選?是素數,那麼……一定不是素數。事實上,如果篩的是……那麼考慮 2*3這個數,它被2篩了一次,又被3篩了一次,沒有必要。可以這樣篩選:對於每乙個素數,篩掉……

2、並不需要對[2,n]的每乙個數進行篩選,只需要對

class solution 

for (int i = 2; i * i < n; i++)

else

}} //所有不是質數的數已經全部篩掉

//計算剩餘的質數個數

for (int i = 2; i < n; i++)

}return result;}}

leetcode 204 計數質數

統計所有小於非負整數 n 的質數的數量。示例 輸入 10輸出 4解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 厄拉多塞篩法 西元前250年,希臘數學家厄拉多塞 eeatosthese 想到了乙個非常美妙的質數篩法,減少了逐一檢查每個數的的步驟,可以比較簡單的從一大堆數字之中,篩選出...

leetcode204 計數質數

統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 厄拉多賽篩法,先找到不超過根號n的所有素數,再把這些素數的所有倍數去掉 class solution def countprimes self,n int int 厄拉...

LeetCode204 計數質數

統計所有小於非負整數 n 的質數的數量。示例 輸入 10輸出 4解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 解析 我一開始想的方法是對每個數字都判斷是否為質數,如果是質數,則增加1。最後發現超時了,應該是時間複雜度較高。後來參考了別人的方法,對每個數字,都對應乙個bool值,表示...