leetcode 204 計數質數

2021-10-02 07:16:20 字數 548 閱讀 5776

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

示例:

輸入: 10

輸出: 4

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

一開始以為很簡單,寫了個o(n^2)的超時了,然後各種優化依然超時。無奈只得看看大神的題解。

思慮很簡單,我們有乙個前提,所有的非素數一定能拆成一些素數的乘積

如:

4=2x2

15=2x3x5

20=2x2x5

所以我們先假設所有的數都是素數,用排除法,所有素數的2倍及以上的數肯定都是非素數。(非素數當然也是,不過用素數計算就夠了),我們能找出所有的非素數。剩下的當然就是素數了。

class

solution

}int cnt=0;

for(

int i=

2;i(dp[i]

)cnt++

;return cnt;

}}

參考:

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值,表示...