求質(zhì)數(shù)

想到當(dāng)初實習(xí)和轉(zhuǎn)正的面試中都遇到了算質(zhì)數(shù)這道題,又都沒有很好的寫出來,就很懊惱,所以想當(dāng)個好的程序媛,先從這個問題開始吧。

“對于給定的整數(shù) N,求出所有小于 N 的質(zhì)數(shù),并打印出來?!?br>

當(dāng)時聽到這個問題,第一反應(yīng)肯定是從2到N-1的除,如果都不能整除就是質(zhì)數(shù),然后我就這么做了……好吧,不要嘲笑我,就算是這樣代碼也寫得磕磕絆絆,Java和c++混在一起的感覺。

今天搜“求質(zhì)數(shù)”的時候看到這么一篇文章,http://blog.csdn.net/net_assassin/article/details/8960572,我所想到的方法按10分只能得1分,好吧。2到N的開方的方法也聽同學(xué)提起過,倒是試除法之后的篩法,讓人耳目一新,值得學(xué)習(xí)一下。

篩法敘述起來是這樣的:首先,2是公認(rèn)最小的質(zhì)數(shù),所以,先把所有2的倍數(shù)去掉;然后剩下的那些大于2的數(shù)里面,最小的是3,所以3也是質(zhì)數(shù);然后把所有3的倍數(shù)都去掉,剩下的那些大于3的數(shù)里面,最小的是5,所以5也是質(zhì)數(shù)......上述過程不斷重復(fù),直到所求出的質(zhì)數(shù)大于N的開方,這時就已經(jīng)把某個范圍內(nèi)的合數(shù)全都除去(就像被篩子篩掉一樣),剩下的就是質(zhì)數(shù)了。

http://coolshell.cn/articles/3738.html把兩種算法表達(dá)的比較好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容