超超超新手发一个自编找素数的代码,请大牛过目看看哪里可以优化,求扔砖
谢过啦~! c++ vector 优化
[解决办法]
楼主可以参考下:http://blog.csdn.net/program_think/article/details/7032600
[解决办法]
算法的优化我就不说了,google一下,多成马了。
对于你的代码,我提几个建议:
1、main里面的for循环中的if语句,你的意思是用来换行。
建议:如果是对同一个变量的if判断,请用if...elseif等结构。虽然有些项目开了优化,编译器对于一些代码能自行帮你优化,但是还是养成手动优化的习惯!
2、对于CalcPrimes这个函数,除非你换思路,这样写的话,瓶颈一定在vector的push_back上。如果追求速度,请不要使用vector,直接用数组吧。
3、如果你不知道怎么优化,建议看下怎么使用VS的性能分析器,先学会怎么找到性能瓶颈再说
[解决办法]
这段代码效率低了些。
1,首先说你的计数方法,为何不改成遇到能整除的数就判断为非素数,立即break内循环,减少循环次数,省去计数过程。
2,还有就是for (int j=2; j<i;j++),可改为:for (int j=2; j<=i/2;j++) ,一个整数N不可能被大于N/2的整数整除。大大节约了循环次数
[解决办法]
改为j<=sqrt(i)
更快.
另外,可以去看下什么素数筛选法(算法导论里有)
[解决办法]
Finding prime numbers - Kenneth Haugland
Different schemas for finding prime numbers explained with code
http://www.codeproject.com/Article.aspx?tag=198374988322054872&