天天看點

每日一小練——Eratosthenes 篩選法

上得廳堂,下得廚房,寫得代碼,翻得圍牆,歡迎來到睿不可擋的每日一小練!

題目:Eratosthenes篩選法

内容:

求質數是一個很普遍的問題,通常不外乎用數去除,除到不盡時,給定的數就是質數。但是早在2000年前人們就知道了一個不必用除法而找出2~N的所有質數的方法。假設一個很神奇的篩子,可以給出一個數,例如i,這個篩子有辦法把i所有的倍數去掉。請用這個方法求出2~N之間的所有質數。即Eratosthenes篩選法。

我的解法:上來沒多想,打開vs2013就敲了起來,問題果然很簡單,分分鐘就超神。。奧,不對就解決了!其實就是把後面可以用前面倍數表示的數去掉,因為偶數都包含2,是以隻考慮奇數就可以了,這樣算法中确實避免了除法,很不錯的。

實驗結果為

每日一小練——Eratosthenes 篩選法

歡迎大家加入每日一小練,嘿嘿!

每天練一練,日久見功夫,加油!

            -End-

參考文獻:《c語言名題精選百則》

繼續閱讀