通过计算一个程序执行所用时间,得出算法是否高效率
long start=System.currentTimeMillis();系统当前时间(距离1970年1月1日午夜过去了多长时间--以毫秒计)
....算法
long end=System.currentTimeMillis();
System.out.println("所用时间"+(end-start)+"毫秒");
题:列出1到100内的所有质数
以下程序为了明确计算算法效率,改为1到100000内的质数
1 class TestZhiShu 2 { 3 public static void main(String[] args) 4 { 5 long start=System.currentTimeMillis(); 6 for(int i=1;i<=100000;i++){ 7 int k=0;//定义一个变量 8 for(int j=1;j<=i;j++){ 9 10 int sum=i%j;//用每次遍历的数取模从1到它本身 11 if(sum==0) 12 k++;//如果可以整除,k++ 13 if(k>2) 14 break;//一旦k>2肯定不是质数,就跳出循环,节约执行时间增加效率 15 } 16 if(k<=2){//因为质数只能被1和它本身整除,所以k<=2时输出这个数 17 System.out.println(i); 18 } 19 } 20 long end=System.currentTimeMillis(); 21 System.out.println("执行时间为"+(end-start)+"毫秒");//29539毫秒;bresk优化后9469毫秒 22 } 23 }
运行结果:(优化前)
优化后: