天天看點

python尋找所有三位數素數_尋找所有的素數的python實作

尋找所有的素數的python實作

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

思路如下:

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

實作代碼如下:

#coding=UTF-8

#尋找所有的素數

def not_p(n):

return lambda x:x%n!=0

def pro_odd():#從3開始的奇數生成器

n=1

while True:

n=n+2

yield n

def primes():#定義一個生成器,不斷傳回下一個素數

yield 2

it=pro_odd()

while True:

n=next(it)

yield n

it=filter(not_p(n),it)

#測試

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

if(i<300):

print(i)

else:

break