**思路:首先列出指定範圍內所有候選數字,然後從前往後依次選擇乙個數字去除以後面所有數字,能夠被整除的肯定不是素數,把這些數字過濾掉,然後重複這個過程,直到選擇的除數大於最大數字的平方根為止。**主要演示內建函式filter()和切片的用法,實際上這個演算法的效率並程式設計客棧不是很高。
def primes2(maxnumber):
'''篩選法獲取小於maxnumber的所有素數'''
#待判斷整數
lst = list(range(3, maxnumber, 2))
#最大www.cppcns.com整數的平方根
m = int(maxnumber**0.5)
for index in range(m):
current = lst[index]
#如果當前數字已大於最大整數的平方根,結束判斷
if current > m:
break
#對該www.cppcns.com位置之後的元素進行過濾
lst[indwww.cppcns.comex+1:] = list(
filter(
lambda x: 0 if not x%current else x,
lst[index+1:]))
#2也是程式設計客棧素數
return [2] + lst
本文標題: python使用篩選法計算小於給定數字的所有素數
本文位址:
利用Eratosthenes篩選法計算質數
演算法第1步就是寫下從3至某個上限之間的所有奇數。在演算法的剩餘部分,遍歷整個列表並剔除所有不是質數的奇數。在3之後把每逢第3個數 3的倍數 剔除。完成這一步之後,輪到5,將所有5的倍數剔除。這樣依次類推 反覆進行,最後列表中未被剔除的數均為質數。這裡可能讀者會有問題了,為什麼輪到4 6 8 10等...
python程式設計 篩選法求素數
1.題目要求 使用列表實現篩選法求素數 編寫程式,輸入乙個大於2的自然數,然後輸出小於該數字的所有素數組成的列表。2.思路解析 整個題目要求還是比較簡單的,只要知道怎麼篩選除素數就可以了,涉及的語法和內建函式都是比較常見的。題目需要列出所有小於輸入的數字 num 所以我們需要從1遍歷num 1,但是...
使用篩選法求N以內的素數
1.使用篩選法求素數的思想是 使用乙個bool isprime n 來儲存乙個數是不是素數的標誌位。首先偶數不是素數 2除外 將2的倍數isprime全部設定為false。i從3開始遍歷,如果i為素數,則將i的倍數isprime全部設定成false。這樣就篩選掉了好多不是素數的數。從0遍歷ispri...