python小練習 利用filter求素數

2021-09-17 21:13:05 字數 914 閱讀 5446

計算素數的乙個方法是埃氏篩法,它的演算法理解起來非常簡單:

首先,列出從2開始的所有自然數,構造乙個序列:

2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …

取序列的第乙個數2,它一定是素數,然後用2把序列的2的倍數篩掉:

3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …

取新序列的第乙個數3,它一定是素數,然後用3把序列的3的倍數篩掉:

5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …

取新序列的第乙個數5,然後用5把序列的5的倍數篩掉:

7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …

不斷篩下去,就可以得到所有的素數。

#無限序列生成器

def _odd_iter():

n=1while true:

n=n+2

yield n

#篩選函式

def _not_divisible(n):

return lambda x:x%n>0

def primes():

yield 2

it = _odd_iter()

while true:

n = next(it)

yield n

it = filter(_not_divisible(n),it)

for n in primes():

if n<1000:

print(n)

else:

break

python練習小程式

1.今年是否為閏年 import time thisyear time.localtime 0 print time.localtime if thisyear 400 0 or thisyear 4 0 and thisyear 100!0 print this year s is leap ye...

Python小練習三

給出下列文件,但求使用者可以不使用者文字編輯器的情況下修改配置文件 1.只修改backend的配置就可以 2.使用者需要輸入backend,在輸入網域名稱 最後輸入具體配置 the key input 請輸入需要修改的標識1 the value input 請輸入需要修改的標識2 the conte...

python 小練習二

coding utf 8 輸入一句英文,要求倒敘列印出來。例如 i love you you love i b i can go through any troubles,and you?nni hao list a b.split while true if list a 1 list a lis...