尋找所有的素數的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