Java_质数
什么是质数:
"质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。"
测试两个求质数的方式:
测试数据一、测试数量【10万】
方式一:Boolean
代码语言:javascript复制/**
* 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) "毫秒");
方式二:【&】
代码语言:javascript复制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】啊
代码语言:javascript复制System.gc();
对比图:【去掉输出】
总结:两者相较差不多,所以那种都可以。
测试数据二、【1000000】百万
测试编码:
代码语言:javascript复制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) "毫秒");
}
}
效果:
基本上可以看出来,第二种的方式消耗时间还是稍微多一点点的。
希望能对大家有所帮助