埃氏篩法

首先究孕,列出從2開(kāi)始的所有自然數(shù)溃槐,構(gòu)造一個(gè)序列:

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

取序列的第一個(gè)數(shù)2厦幅,它一定是素?cái)?shù)哮幢,然后用2把序列的2的倍數(shù)篩掉:

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

取新序列的第一個(gè)數(shù)3芯勘,它一定是素?cái)?shù)缰犁,然后用3把序列的3的倍數(shù)篩掉:

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

取新序列的第一個(gè)數(shù)5,然后用5把序列的5的倍數(shù)篩掉:

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

不斷篩下去捡偏,就可以得到所有的素?cái)?shù)唤冈。

用Python來(lái)實(shí)現(xiàn)這個(gè)算法,可以先構(gòu)造一個(gè)從3開(kāi)始的奇數(shù)序列:

def_odd_iter():

? ? ? ? ? n =1

? ? ? ? ? while True:? ? ? ??

? ? ? ? ? ? ? ? ?n = n +2

? ? ? ? ? ? ? ? ?yield ?n


注意這是一個(gè)生成器霹琼,并且是一個(gè)無(wú)限序列务傲。

然后定義一個(gè)篩選函數(shù):

def_not_divisible(n):

? ? ?return ? ?lambda x: x % n >0

最后,定義一個(gè)生成器枣申,不斷返回下一個(gè)素?cái)?shù):

defprimes():

? ? yield 2

? ? ?it = _odd_iter()# 初始序列

? ? ?while True:? ? ? ??

? ? ? ? ? ? n = next(it)# 返回序列的第一個(gè)數(shù)yieldn? ? ? ? it = filter(_not_divisible(n), it)#?

構(gòu)造新序列

這個(gè)生成器先返回第一個(gè)素?cái)?shù)2,然后看杭,利用filter()不斷產(chǎn)生篩選后的新的序列忠藤。

由于primes()也是一個(gè)無(wú)限序列,所以調(diào)用時(shí)需要設(shè)置一個(gè)退出循環(huán)的條件:

# 打印1000以內(nèi)的素?cái)?shù):

for n in primes():

? ? if ?n <1000:? ? ? ??

? ? ? ? ?print(n)

? ? else:

? ? ? ? ? break

注意到Iterator是惰性計(jì)算的序列楼雹,所以我們可以用Python表示“全體自然數(shù)”模孩,“全體素?cái)?shù)”這樣的序列尖阔,而代碼非常簡(jiǎn)潔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榨咐,一起剝皮案震驚了整個(gè)濱河市介却,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌块茁,老刑警劉巖齿坷,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異数焊,居然都是意外死亡永淌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門佩耳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)遂蛀,“玉大人,你說(shuō)我怎么就攤上這事干厚±畹危” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蛮瞄,是天一觀的道長(zhǎng)所坯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)裕坊,這世上最難降的妖魔是什么包竹? 我笑而不...
    開(kāi)封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮籍凝,結(jié)果婚禮上周瞎,老公的妹妹穿的比我還像新娘。我一直安慰自己饵蒂,他們只是感情好声诸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著退盯,像睡著了一般彼乌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渊迁,一...
    開(kāi)封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天慰照,我揣著相機(jī)與錄音,去河邊找鬼琉朽。 笑死毒租,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的箱叁。 我是一名探鬼主播墅垮,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼惕医,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了算色?” 一聲冷哼從身側(cè)響起抬伺,我...
    開(kāi)封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灾梦,沒(méi)想到半個(gè)月后峡钓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斥废,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年椒楣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牡肉。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捧灰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出统锤,到底是詐尸還是另有隱情毛俏,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布饲窿,位于F島的核電站煌寇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏逾雄。R本人自食惡果不足惜阀溶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸦泳。 院中可真熱鬧银锻,春花似錦、人聲如沸做鹰。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钾麸。三九已至更振,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饭尝,已是汗流浹背肯腕。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钥平,地道東北人乎芳。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像帖池,于是被迫代替她去往敵國(guó)和親奈惑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • python內(nèi)建的filter用于過(guò)濾序列,也可以接收函數(shù)囚巴。 和map()不同的是原在,filter()把傳入的函數(shù)依...
    世外大帝閱讀 800評(píng)論 0 0
  • 2112年1月2日,是我二十歲的生日彤叉,很重要的一天庶柿。 這一天意味著我可以繼承我這一族系的所有遺產(chǎn)。也意味著我可以為...
    深海魚不吃魚閱讀 264評(píng)論 0 0
  • 這是我第一次嘗試在公眾號(hào)上寫文章,因?yàn)椴粫?huì)柬焕,開(kāi)始有一個(gè)捉摸期审残,所以我的第一條公眾號(hào)的內(nèi)容是:我只是看看怎么弄! 不...
    莊雯皎閱讀 238評(píng)論 0 0
  • 佛陀常把佛祖掛在嘴上 心在繁華的街市彷徨 詩(shī)人常把生死寫進(jìn)瘋狂 世人皆醉他獨(dú)醒 是他的模樣 我們呢 而常把信仰遺忘...
    蕭路遙閱讀 285評(píng)論 6 7
  • 最初想用數(shù)位板是因?yàn)槲铱吹娇珊箤W(xué)院里面的老師用數(shù)位板錄制視頻用于教學(xué)斑举,感覺(jué)蠻好玩的搅轿。再就是,以前做PPT浪費(fèi)了大量...
    1Z實(shí)驗(yàn)室阿凱閱讀 10,605評(píng)論 0 8