在开始之前,先要了解一个方法,System.currentTimeMillis();,表示当前时间距离1970-01-01 00:00:00的毫秒数。通过这个可以简单查看程序运行的效率。
首先通过最普遍的方法求100000素数的方法

public class PrimeNumberTest {
    public static void main(String[] args) {
        boolean tag = true;
        //获取当前时间距离1970-01-01 00:00:00的毫秒数
        long start = System.currentTimeMillis();
        for (int i = 2; i <= 10000; i++) {
            for (int j = 2; j <i ; j++) {
                if (i % j == 0) {
                  tag = false;
                }
            }
            if (tag == true) {
                System.out.println(i);
            }
            tag =true;
        }
        //获取当前时间距离1970-01-01 00:00:00的毫秒数
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间:" + (end - start));
    }
}

运行结果如下,所耗费的时间为472
20210718020225.jpg

显然,上面的程序,在运行过程中,执行了许多重复的步骤,将其进行算法优化

public class PrimeNumberTest {
    public static void main(String[] args) {
        boolean tag = true;
        //获取当前时间距离1970-01-01 00:00:00的毫秒数
        long start = System.currentTimeMillis();
        for (int i = 2; i <= 10000; i++) {
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                  tag = false;
                  break;
                }
            }
            if (tag == true) {
                System.out.println(i);
            }
            tag =true;
        }
        //获取当前时间距离1970-01-01 00:00:00的毫秒数
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间:" + (end - start));
    }
}

在之前的基础上进行优化,将if循环中添加break,以停止计算后面的数字。在for的逻辑语句中,对其进行开根号。最终所耗费的时间如下
20210718020526.jpg

public class PrimeNumberTest {
    public static void main(String[] args) {
        //获取当前时间距离1970-01-01 00:00:00的毫秒数
        long start = System.currentTimeMillis();
        for (int i = 2; i <= 10000; i++) {
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                  continue label;
                }
            }
            System.out.println(i);
        }
        //获取当前时间距离1970-01-01 00:00:00的毫秒数
        long end = System.currentTimeMillis();
        System.out.println("所花费的时间:" + (end - start));
    }
}

运行此代码
可以看到,程序所耗费的时间得到的降低,实际应用中,算法的优化影响极其重要,关乎的用户体验等等

最后修改:2021 年 08 月 19 日 01 : 52 PM
如果觉得我的文章对你有用,请随意赞赏