python3計算質數 (厄拉多塞篩法)

2021-09-24 10:10:48 字數 588 閱讀 1593

**ls3[1:6:2] #起始位置為2,終止位置為6,步長為2**

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

if n < 3:

return 0

else:

# 首先生成了乙個全部為1的列表

output = [1] * n

# 因為0和1不是質數,所以列表的前兩個位置賦值為0

output[0],output[1] = 0,0

# 此時從index = 2開始遍歷,output[2]==1,即表明第乙個質數為2,然後將2的倍數對應的索引

# 全部賦值為0. 此時output[3] == 1,即表明下乙個質數為3,同樣劃去3的倍數.以此類推.

for i in range(2,int(n**0.5)+1):

if output[i] == 1:

output[i*i:n:i] = [0] * len(output[i*i:n:i])

# 最後output中的數字1表明該位置上的索引數為質數,然後求和即可.

return sum(output)

LeetCode 計數質數(厄拉多塞篩法)

2020年5月27日 解題 質數寫法的固化思維使人第一想法就寫出下面的 厄拉多塞篩法通過質數推算出接下來的非質數,一直算到n。舉個例子 質數2,我們可以推算出2x2 4 2x3 6 2x4 8等,能發現質數的倍數都是非質數,標記下來 接下來到質數3,我們可以推算出3x2 6 3x3 9 3x4 12...

C 找質數(素數)厄拉多塞篩法

c 找質數 素數 厄拉多塞篩法 質數 prime number 又稱素數,有無限個。指整數在乙個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。換句話說,只有兩個正因數 1和自己 的自然數即為素數 除了1和它本身以外不再有其他的因數 根據算術基本定理,每乙個比1大的整數,要麼本身是...

161 用厄拉多塞篩法求質數個數

西元前250年,希臘數學家厄拉多塞想到了乙個非常美妙的質數篩法,減少了逐一檢查每個數的的步驟,可以比較簡單的從一大堆數字之中,篩選出質數來,這方法被稱作厄拉多塞篩法 sieve of eeatosthese 具體操作 先將 2 n 的各個數放入表中,然後在2的上面畫乙個圓圈,然後劃去2的其他倍數 第...