給出要篩數值的範圍n,找出
以內的素數
。先用2去篩,即把2留下,把2的倍數剔除掉;再用下乙個質數,也就是3篩,把3留下,把3的倍數剔除掉;接下去用下乙個質數5篩,把5留下,把5的倍數剔除掉;不斷重複下去......。
詳細列出演算法如下:
列出2以後的所有序列:
標出序列中的第乙個素數,也就是2,序列變成:
將剩下序列中,劃摽2的倍數(用紅色標出),序列變成:
如果現在這個序列中最大數小於最後乙個標出的素數的平方,那麼剩下的序列中所有的數都是素數,否則回到第二步。
本例中,因為25大於2的平方,我們返回第二步:
剩下的序列中第乙個素數是3,將主序列中3的倍數劃出(紅色),主序列變成:
我們得到的素數有:2,3
25仍然大於3的平方,所以我們還要返回第二步:
現在序列中第乙個素數是5,同樣將序列中5的倍數劃出,主序列成了:
我們得到的素數有:2 3 5 。
因為25等於5的平方,跳出迴圈.
結論:去掉紅色的數字,2到25之間的素數是:2 3 5 7 11 13 17 19 23。
艾氏篩法研究
計算輸出1億以內的質數.當然一上來這個所有的偶數乾掉.2直接輸出.這個是我的 最後步長330130093 也就是這麼多步.下面的是老師的 步長99151769 初步計算速度是我的三倍.姜還是老的辣.我的其實還有優化的空間.暫時不去想了.備考去.include stdio.h include math...
poj 3292 艾氏篩法的變型
題意 有一種數叫h number,什麼是h number,就是等於4 n 1的數,所有的h number mod 4 等於 1。h number分為h prime和h composite兩類,h prime是不能被自己和1以外的其他h number 整除的數。剩下的就都是h composite數了。...
質數篩 埃氏篩
我們來看這麼一道問題 給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 n 10000000,m 100000 首先很容易聯想到使用列舉法來確定題目的整體框架 for i 1 m else 關鍵在於質數判斷部分。質數的判斷問題我們可以從定義出發。質數,又稱素數,是除了1...