这本身没什么,代码一堆
发来纪念下而已
本来刚学习java,编写输出100以内的素数
对于我这个有代码运行性能洁癖的人(但是本身又不懂算法)来说,不能忍
于是看了些资料
参考:
http://blog.csdn.net/program_think/article/details/7032600
自己山寨一个
(注意是山寨,那就是抄袭改改而已)
public class TestPrime{ // 程序的入口 public static void main(String args[]){ // 向控制台输出信息 System.out.println("TestPrime"); long startTime=System.curreTestPrimentTimeMillis(); int num = 1000000;//100W //生成2到num的数组 int[] array = new int[num]; for (int i = 2; i < num; i++) { array[i] = i; } //这就是筛选法了 for (int i = 2; i < num; i++) { if (array[i] != 0) { int j, temp; temp = array[i]; for (j = 2 * temp; j < num; j = j + temp) { array[j] = 0; } //输出非常耗时间 100w千万不要拿去输出 你懂得 //System.out.print(array[i] + " "); } } //计算运行时间 long endTime=System.currentTimeMillis(); System.out.println("程序运行时间:"+(endTime-startTime)+"ms"); } }
没有输出的运行时间的结果
当然这个是我的主机 100w 大概 50-70ms一般都是50几
上面的可能还有优化的余地
if (array[i] != 0) 如果直接把数组赋值为bool会不会更快 这一点我不能确定
还有一些细节的东西
自己去调试吧
时间: 2024-11-04 19:04:40