之前写的比较慢,这次加了两个优化;
代码如下:
class PriemNumber{
public static void main(String[] args){
//用来统计质数的个数
int count = 0;
//用来标识是否是质数
boolean isFlag = true;
long start = System.currentTimeMillis(); //开始时间
for(int i = 2;i <= 100000;i++){ //遍历100000以内的自然数
for(int j = 2;j <= Math.sqrt(i);j++){ //优化二:对本身是质数的自然数有效
if(i % j == 0){
isFlag= false;
break; //优化一:只对本身是非质数的自然数有效
}
}
//重置isFalg
if(isFlag == true){
count++;
}
isFlag = true;
}
long end = System.currentTimeMillis(); //结束时间
System.out.println("质数的个数为:" + count);
System.out.println("所花费的时间为:" + (end - start));
}
}
简化版:continue + label
class PriemNumber{
public static void main(String[] args){
//用来统计质数的个数
int count = 0;
long start = System.currentTimeMillis(); //开始时间
label:for(int i = 2;i <= 100000;i++){ //遍历100000以内的自然数
for(int j = 2;j <= Math.sqrt(i);j++){
if(i % j == 0){
continue label;
}
}
count++;
}
long end = System.currentTimeMillis(); //结束时间
System.out.println("质数的个数为:" + count);
System.out.println("所花费的时间为:" + (end - start));
}
}