python使用篩選法計算小於給定數字的所有素數
阿新 • • 發佈:2018-12-30
本文例項為大家分享了python計算小於給定數字的所有素數的具體程式碼,供大家參考,具體內容如下
程式碼思路:首先列出指定範圍內所有候選數字,然後從前往後依次選擇一個數字去除以後面所有數字,能夠被整除的肯定不是素數,把這些數字過濾掉,然後重複這個過程,直到選擇的除數大於最大數字的平方根為止。程式碼主要演示內建函式filter()和切片的用法,實際上這個演算法的效率並不是很高。
def primes2(maxNumber):
'''篩選法獲取小於maxNumber的所有素數'''
#待判斷整數
lst = list(range(3, maxNumber, 2))
#最大整數的平方根
m = int(maxNumber**0.5)
for index in range(m):
current = lst[index]
#如果當前數字已大於最大整數的平方根,結束判斷
if current > m:
break
#對該位置之後的元素進行過濾
lst[index+1:] = list(
filter(
lambda x: 0 if not x%current else x,
lst[index+1:]))
#2也是素數
return [2] + lst
以上就是本文的全部內容,希望對大家的學習有所幫助