leetcode204 計數質數

2021-09-16 12:44:54 字數 664 閱讀 9782

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

示例:

輸入: 10

輸出: 4

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

厄拉多賽篩法,先找到不超過根號n的所有素數,再把這些素數的所有倍數去掉:

class

solution

:def

countprimes

(self, n:

int)

->

int:

# 厄拉多賽篩法,先找到不超過根號n的所有素數,把這些素數的所有倍數去掉

if n <=2:

return

0 res =[1

]* n # 位置i為1表示為素數

res[:2

]=[0

]*2for i in

range

(int

(n**

0.5)+1

):if res[i]==1

: res[i*i:n:i]=[

0]*len

(res[i*i:n:i]

)# 從i*i開始

return

sum(res)

leetcode 204 計數質數

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

LeetCode204 計數質數

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

LeetCode 204 計數質數

統計所有小於非負整數 n 的質數的數量。示例 輸入 10輸出 4解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 思路 定義乙個陣列,陣列索引為n,val 0 or 1,表示本身是否為質數。對於 2 3 本身就是質數,先把陣列都置1,然後把2的倍數,改為0,然後把3的倍數改為0,然後是...