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