1. 程式人生 > >Python 利用filter函數求素數

Python 利用filter函數求素數

生成器 bre 自然數 filter print lambda 開始 first n+2

首先從2開始自然數序列

2,3,4,5,6,7,8,9,10,11,12,13,14……

剔除2和2 的倍數,奇數列

3,5,7,9,11,13,15,17,19……

剔除3的倍數

5,7,11,13,17,19

剔除5的倍數,以此類推

#創建一個奇數序列

def jishu():

  n=1

  while True:

  n=n+2

  yield n #叠代器Iterator,惰性序列

#創建一個過濾函數

def guolv(first):

  return lambda x:x % first>0

#定義一個生成器返回素數

def sushu():

  yield 2

  it=jishu()#奇數序列

  while True:

    first=next(it)

    yield first

    it=filter(guolv(first),it)#過濾後得到新的叠代器

for n in sushu():

  if n<100:

    print(n)

  else:

    break

  

Python 利用filter函數求素數