以输出质数的两种形式为例进行程序的优化
题目要求需要用到的结构实现功能的代码输出结果优化1.缩小除数j的取值范围2.使用带标签的continue简化
优化后代码优化后输出结果联系方式
题目要求
规定在1-100000范围内,输出所有的质数的个数,并尽量提高运算效率。 质数定义:只能被1和自己整除的数。
需要用到的结构
1、对计算开始和计算结束的时间节点赋值
long start
= System
.currentTimeMillis();
long end
= System
.currentTimeMillis();
2、取一个数(i)的开平方值
int j
= Math
.sqrt(i
);
3、使用带标签的continue/break
label1:
for(int i
= 1;i
<= 4;i
++){
label2
:for(int j
= 1;j
<= 4;j
++){
if(i
/ j
== 3){
break label1
;
}
}
}
实现功能的代码
class PrimeNumTest{
public static void main(String
[] args
) {
long start
= System
.currentTimeMillis();
boolean isFlag
= true;
int count
= 0;
for(int i
= 2;i
<= 100000;i
++){
for(int j
= 2;j
<= i
-1;j
++){
if(i
% j
== 0){
isFlag
= false;
break;
}
}
if(isFlag
== true){
count
++;
}
isFlag
= true;
}
long end
= System
.currentTimeMillis();
System
.out
.println("所花的时间为" + (end
- start
));
System
.out
.println("质数的个数为" + count
);
System
.out
.println("by Asuka Truth");
}
}
输出结果
优化
1.缩小除数j的取值范围
2.使用带标签的continue简化
优化后代码
class PrimeNumTest2{
public static void main(String
[] args
){
int count
= 0;
long start
= System
.currentTimeMillis();
label1
:for(int i
= 2;i
<= 100000;i
++){
label2
:for(int j
= 2;j
<= Math
.sqrt(i
);j
++){
if(i
% j
== 0){
continue label1
;
}
}
count
++;
}
long end
= System
.currentTimeMillis();
System
.out
.println("所花的时间为" + (end
- start
));
System
.out
.println("质数的个数为" + count
);
System
.out
.println("by Asuka Truth");
}
}
优化后输出结果
联系方式
发现错误或想提出建议欢迎联系我 Email:AsukaTruth@163.com 或站内联系