天天看點

尋找所有的素數的python實作

尋找所有的素數的python實作

尋找素數也是一個在學習python的一個簡單題目。涉及到的知識點是:python内置函數filter()的應用。

思路如下:

  • 在全部自然數中,先取出素數2,然後過濾掉以2為因子的所有數(因為這些數都不是素數)得到新的序列
  • 然後在新序列中取出素數 3,然後過濾掉以3為因子的所有數得到一個新的序列
  • 然後在新序列中去除第一個數,然後過濾掉以這個數為因子的所有數。
  • 按上面的步驟做下去即可取出所有的數

實作代碼如下:

#coding=UTF-8
#尋找所有的素數
def not_div(n):
    return lambda x:x%n!=

def pro_odd():#從3開始的奇數生成器
    n=
    while True:
        n=n+
        yield n

def primes():#定義一個生成器,不斷傳回下一個素數
    yield 
    it=pro_odd()
    while True:
        n=next(it)
        yield n
        it=filter(not_div(n),it)

#測試
for i in primes():#由于是無窮序列,下面對輸出就進行了一個限制
    if(i<):
        print(i)
    else:
        break