Java_质数_两种解法(时间对比)
生活随笔
收集整理的這篇文章主要介紹了
Java_质数_两种解法(时间对比)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java_質數
什么是質數:
"質數是指在大于1的自然數中,除了1和它本身以外不再有其他因數的自然數。"
測試兩個求質數的方式:
測試數據一、測試數量【10萬】
方式一:Boolean
/** * 1、100000以內的質數 */ int num=10000; long start = System.currentTimeMillis(); for (int i = 2; i <= num; i++) { boolean b=true; for (int j = 2; j <i; j++) { if(i%j==0){ b=false; break; } } if(b){ System.out.println(i); } } long end = System.currentTimeMillis(); System.out.println("第一種用時:"+(end-start)+"毫秒");方式二:【&】
int num=10000; long start1 = System.currentTimeMillis(); for(int i=2;i<=num;i++) { for(int j=2;j<=i;j++) { if(i%j==0 && i!=j) { break; } if(j==i) { System.out.println(i); } } } long end1 = System.currentTimeMillis(); System.out.println("第二種用時:"+(end1-start1)+"毫秒");測試的時候中間加上【gc】啊
System.gc();對比圖:【去掉輸出】
總結:兩者相較差不多,所以那種都可以。
測試數據二、【1000000】百萬
測試編碼:
package test;public class Action {public static void main(String[] args) {/*** 1、100000以內的質數*/int num=1000000;long start = System.currentTimeMillis();for (int i = 2; i <= num; i++) {boolean b=true;for (int j = 2; j <i; j++) {if(i%j==0){b=false;break;}}if(b){ // System.out.println(i);}}long end = System.currentTimeMillis();System.out.println("第一種用時:"+(end-start)+"毫秒");System.gc();long start1 = System.currentTimeMillis();for(int i=2;i<=num;i++) { for(int j=2;j<=i;j++) {if(i%j==0 && i!=j) {break; }if(j==i) { // System.out.println(i); } }}long end1 = System.currentTimeMillis();System.out.println("第二種用時:"+(end1-start1)+"毫秒");} }效果:
基本上可以看出來,第二種的方式消耗時間還是稍微多一點點的。
希望能對大家有所幫助
總結
以上是生活随笔為你收集整理的Java_质数_两种解法(时间对比)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php_DBHelper
- 下一篇: Java_小球自由落体_小球下落问题