**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的其他倍數 第...