public static void main(String[] args) {
int i;
boolean b=false;
for(i=101;i<201;i++) {
for(int a=2;a<=i;a++) {
if(i%a==0)
break;
if(i==a)
b=true;
}
}
if(b) System.out.println(i);
}
public static void main(String[] args) {
int i;
for(i=101;i<201;i++) {
boolean b=true;
for(int a=2;a<i;a++) {
if(i%a==0)
{ b = false; break; }
}
if(b) System.out.println(i);
}
}
问题的根本原因是条件判断的位置不正确,导致无法将结果输出。以下是对代码的修改建议:
public static void main(String[] args) {
// 初始化变量
int i;
boolean b = false;
// 循环判断每个数是否是质数
for(i = 101; i < 201; i++) {
// 声明一个变量flag用于标记是否为质数
boolean flag = true;
// 判断i是否是质数
for(int a = 2; a < i; a++) {
if(i % a == 0) {
flag = false;
break;
}
}
// 如果当前数为质数,则将标记变量b设置为true,并输出结果
if(flag) {
b = true;
System.out.println(i);
}
}
}
修改后的代码中,我们将判断是否是质数的逻辑放在了内层循环中,并且使用一个额外的变量flag
来标记是否为质数。在内层循环中,如果存在可以整除的因子,则将flag
设置为false
,并且在外层循环中判断flag
是否为true
来确定是否输出结果。
通过这种修改,我们可以确保每次判断的结果能够正确输出。