Java的break怎么过滤不掉9

class Main {
public static void main(String[] args) {

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

  for(int a=2;a<m;a++){
      if(m%a==0){
         break;
      } //9%3 不是等于0吗,怎么9还是被打印出来了。
      System.out.print(m);
  }

}
}
}

因为当m=9,a=2的时候,m % a是等于1的,此时就会打印出m的值,m=9
执行内层循环a++,此时,m=9,a=3。
这时候,m%a==0 是满足条件的,所以此时就跳出内层循环。
如果你是想求2~100之间的质数:可以这样修改

package com.csdn;

public class Main {
    public static void main(String[] args) {
        for (int m = 2; m <= 100; m++) {
            boolean flag = true;
            for (int a = 2; a < m; a++) {
                if (m % a == 0) {
                    flag = false;
                    break;
                }

            }
            if (flag) {
                System.out.print(m + " ");
            }
        }
    }

}

img

那是m为9,a为2时的打印,把a也打印看下。