埃拉託斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的演算法。要得到自然數n以內的全部素數,必須把小於等於根號n的所有素數的倍數剔除,剩下的就是素數。
這是什麼意思呢?
以100為例,我們先建立乙個擁有101(0-100)個數字的陣列。
先使用最小的素數2,將所有2的倍數(除2本身)標記為合數。
接下來2+1的數是3,此時檢查3是不是素數,檢查標記,發現沒有被標記為合數(因為不是2的倍數),所以再將所有3的倍數標記為合數。
下乙個數是4,發現它已經被標記為合數,所以他可以表示為某乙個小於4的素數的乘積(2*2),所以4的倍數必定含有因子2,所以所有4的倍數已經全部被標記過,直接跳過4。
下乙個數是5,沒有被標記為合數,把所有小於等於100的5的倍數標記為合數
………
這樣一直計算到sqrt(100),即10。
那麼為什麼就在10這個地方停止了呢?數11呢?因為所有的小於n的11倍數已經被標記過了,例如22,33,44,55…分別有因子2,3,4(2*2),5,而唯一可能沒有被標記的數11*11已經超過n了。
埃拉託斯特尼篩法
質數又稱素數。指在乙個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。怎麼判斷n以內的哪些數是質數呢?厄拉多塞是一位古希臘數學家,他在尋找素數時,採用了一種與眾不同的方法 先將2 n的各數放入表中,然後在2的上面畫乙個圓圈,然後劃去2的其他倍數 第乙個既未畫圈又沒有被劃去的數是3,...
埃拉託斯特尼 Eratosthene 篩法
下面是 功能 將1 n的素數輸出 使用了埃拉託斯特尼 eratosthene 篩法 include include using namespace std int prime 10000000 存放需要篩選數 int sieve int prime,int n,int k n是1 n這個範圍,k是當...
埃拉託斯特尼篩法 檢定素數
埃拉託斯特尼篩法描述 要得到自然數n以內的全部素數,必須把不大於 給出要篩數值的範圍n,找出以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉 再用下乙個質數,也就是3篩,把3留下,把3的倍數剔除掉 接下去用下乙個質數5篩,把5留下,把5的倍數剔除掉 不斷重複下去.題目 統計找出一千萬以內,一共有...