寫這篇部落格就是給自己留個簡單實用的篩素數表的模板而已。
bool prime[m];
prime[0] = prime[1] = 1;
for(int i = 2; i*2 <= m; i++) prime[i*2] = 1;
for(int i = 3; i*i <= m; i+=2)
if(!prime[i])
for(int j = i*i; j <= m; j+=2*i) prime[j] = 1;
因為自己總是忘記這個求法的優化,所以決定在這裡加深下印象。
優化:1.先把偶數篩去
2.每次只用素數篩(因為合數的整倍數肯定被比其小的素數篩過)
3.每個素數i都從i*i開始篩,因為i*k (k4.每個素數i都篩其奇數倍的數,因為偶數倍的數是偶數,最開始就被篩去了。
目前來說這四個應該就足夠了。
埃拉託斯特尼篩法 檢定素數
埃拉託斯特尼篩法描述 要得到自然數n以內的全部素數,必須把不大於 給出要篩數值的範圍n,找出以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉 再用下乙個質數,也就是3篩,把3留下,把3的倍數剔除掉 接下去用下乙個質數5篩,把5留下,把5的倍數剔除掉 不斷重複下去.題目 統計找出一千萬以內,一共有...
埃拉託斯特尼篩法 篩選素數
埃拉託斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的演算法。要得到自然數n以內的全部素數,必須把不大於根號n的所有素數的倍數剔除,剩下的就是素數。演算法思想 要得到自然數n以內的全部素數,必須把不大於 的所有素數的倍數剔除,剩下的就是素數。給出要篩數值的範圍...
埃拉託斯特尼篩法
質數又稱素數。指在乙個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。怎麼判斷n以內的哪些數是質數呢?厄拉多塞是一位古希臘數學家,他在尋找素數時,採用了一種與眾不同的方法 先將2 n的各數放入表中,然後在2的上面畫乙個圓圈,然後劃去2的其他倍數 第乙個既未畫圈又沒有被劃去的數是3,...