想到當(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á)的比較好。