您的位置:首页 > 编程语言 > Java开发

java筛选法求素数

2014-11-16 11:37 197 查看
这本身没什么,代码一堆

发来纪念下而已

本来刚学习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会不会更快 这一点我不能确定


还有一些细节的东西

自己去调试吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: