为什么只输出2,3为什么能输出2,3。按我的思维2是不能输出的“j<i",然后运行到9除以2!=0就应该跳出来输出,但是9不是质数

class NineNineTableTest {
 public static void main(String[] args){      
/*
100以内的所有质数

*/
        boolean isFlag = true;

        for (int i =2;i <= 100;i++){

   for (int j = 2;j < i ;j++){

    if (i % j ==0){
     isFlag = false;
    }
   }
   if(isFlag == true){
    System.out.println(i);
   }
        }
 }
}

你默认是true,i初始值为2,j初始值为2,j<i不成立,无法赋值false,所以2也输出了

img

isFlag 需要在每次循环的时候重置为true
代码修改如下:

class NineNineTableTest {
    public static void main(String[] args) {
        /*
        100以内的所有质数
        */
        boolean isFlag = true;

        for (int i = 2; i <= 100; i++) {
            isFlag = true; //这里添加这一句

            for (int j = 2; j < i; j++) {

                if (i % j == 0) {
                    isFlag = false;
                    break; //这里直接结束内循环即可
                }
            }
            if (isFlag == true) {
                System.out.println(i);
            }
        }
    }
}

img