厄拉多塞篩法

2021-10-01 08:41:00 字數 962 閱讀 8477

簡介

1、厄拉多塞篩法

簡介:西元前250年,希臘數學家厄拉多塞(eeatosthese)想到了乙個非常美妙的質數篩法,減少了逐一檢查每個數的的步驟,可以比較簡單的從一大堆數字之中,篩選出質數來,這方法被稱作厄拉多塞篩法(sieve of eeatosthese)。 具體操作:先將 2~n 的各個數放入表中,然後在2的上面畫乙個圓圈,然後劃去2的其他倍數;第乙個既未畫圈又沒有被劃去的數是3,將它畫圈,再劃去3的其他倍數;現在既未畫圈又沒有被劃去的第乙個數是5,將它畫圈,並劃去5的其他倍數……依次類推,一直到所有小於或等於n的各數都畫了圈或划去為止。這時,表中畫了圈的以及未劃去的那些數正好就是小於 n 的素數。

例項

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

# 示例:

# 輸入: 10

# 輸出: 4

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

defcountprimes

(n):

if n <=2:

return

0 temp_list =[0

,0]+

list

(range(2

, n)

)for i in

range(2

, n)

:if i !=0:

temp_list[i *

2:n:i]=[

0]*len

(temp_list[i *

2:n:i]

) result_set =

set(temp_list)

result_set.remove(0)

return

len(result_set)

厄拉多塞篩法

厄拉多塞篩演算法 eratosthenes sieve 是一種求素數的方法,由古希臘數學家厄拉多塞提出。它的原理是,給定乙個數 n,從 2 開始依次將 sqrt 以內的素數的倍數標記為合數,標記完成後,剩餘未被標記的數為素數 從 2 開始 如此可省去檢查每個數的步驟,使篩選素數的過程更加簡單。厄拉多...

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

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

求素數(厄拉多塞篩法 暴力列舉法)

首先 找出第乙個素數,把他的倍數賦值為0 其次 找出其後第乙個不為0的數,該數為素數,把他的倍數賦值為0 最後 重複上述步驟.篩選法也叫厄拉多塞篩法,因為素數的倍數必然不是素數,所以把素數的倍數全置為0,用乙個新的陣列儲存那些不為0 的數,即為素數 include include void putp...