1. 程式人生 > >python使用篩選法計算小於給定數字的所有素數

python使用篩選法計算小於給定數字的所有素數

本文例項為大家分享了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
以上就是本文的全部內容,希望對大家的學習有所幫助