👎 一般解法:
class Test3{
public static void main(String[] args){
boolean flag = true;
for(int i=2; i<=100; i++){
// 从2~(i-1) 不包含它本身
for(int j=2; j<i; j++){
if(i % j == 0){
flag = false;
break;
}
}
if(flag){
System.out.println(i);
}
//重置flag
flag = true;
}
}
}
👍 优化解法①:
class Test3{
public static void main(String[] args){
boolean flag = true;
for(int i=2; i<=100; i++){
// 从2~根号i,此时别忘了等号
for(int j=2; j<=Math.sqrt(i); j++){
if(i % j == 0){
flag = false;
break;
}
}
if(flag){
System.out.println(i);
}
//重置flag
flag = true;
}
}
}
👍 优化解法②
class Test3{
public static void main(String[] args){
//使用带标签的label指定跳出当前循环
label:for(int i=2; i<=100; i++){
// 从2~根号i,此时别忘了等号
for(int j=2; j<=Math.sqrt(i); j++){
if(i % j == 0){
continue label;//不是质数直接跳出
}
}
System.out.println(i);
}
}
}