0
点赞
收藏
分享

微信扫一扫

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();

对比图:【去掉输出】

Java_质数_两种解法(时间对比)_i++

总结:两者相较差不多,所以那种都可以。

测试数据二、【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_质数_两种解法(时间对比)_i++_02

基本上可以看出来,第二种的方式消耗时间还是稍微多一点点的。

希望能对大家有所帮助


举报

相关推荐

0 条评论