leetcode 204 計數質數

2021-10-11 03:52:49 字數 1086 閱讀 7224

目錄

一、題目內容

二、解題思路

三、**

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

示例 1:

輸入:n = 10

輸出:4

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

示例 2:

輸入:n = 0

輸出:0

示例 3:

輸入:n = 1

輸出:0

0 <= n <= 5 * 106

利用厄拉多塞篩法,依次記錄質數以及去掉質數的倍數(注意去掉的數可從質數的平方開始)。

class solution:

def countprimes(self, n: int) -> int:

if n < 3:

return 0

count = 0

is_cut = [false for _ in range(n)]

for i in range(2, n):

if is_cut[i] is false:

count += 1

# 所有i的倍數都劃去(從i的平方開始)

for j in range(i * i, n, i):

is_cut[j] = true

return count

if __name__ == '__main__':

n = 10

s = solution()

ans = s.countprimes(n)

print(ans)

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