C/C++查找一定范围内的素数(筛法)
本文轉(zhuǎn)自于:http://dalu.blogbus.com/logs/37977984.html
由于一個(gè)合數(shù)總是可以分解成若干個(gè)質(zhì)數(shù)的乘積,那么如果把質(zhì)數(shù)(最初只知道2是質(zhì)數(shù))的倍數(shù)都去掉,那么剩下的就是質(zhì)數(shù)了。
例如要查找100以內(nèi)的質(zhì)數(shù),首先2是質(zhì)數(shù),把2的倍數(shù)去掉;此時(shí)3沒有被去掉,可認(rèn)為是質(zhì)數(shù),所以把3的倍數(shù)去掉;再到5,再到7,7之后呢,因?yàn)?,9,10剛才都被去掉了,而100以內(nèi)的任意合數(shù)肯定都有一個(gè)因子小于10(100的開方),所以,去掉,2,3,5,7的倍數(shù)后剩下的都是質(zhì)數(shù)了。
用程序可以這樣解決,引入布爾類型數(shù)組a[i],如果i是質(zhì)數(shù),a[i]=true,否則a[i]=false。那么劃掉i可以表示成a[i]=false。
如果去掉最后一個(gè)用來顯示結(jié)果的循環(huán)的話,運(yùn)行Sieve(10000000)只要1秒多。
?
轉(zhuǎn)載于:https://www.cnblogs.com/renyuan/p/3451738.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C/C++查找一定范围内的素数(筛法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GUI 快捷键的实现思路
- 下一篇: MVC3 学习总结一(未发布)