首页 > 代码库 > java筛选法求素数

java筛选法求素数

这本身没什么,代码一堆

发来纪念下而已

 

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

还有一些细节的东西

自己去调试吧

java筛选法求素数