请你抽根烟\n 2022-05-22 04:49 采纳率: 72%
浏览 30
已结题

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);
  }

}
}
}

  • 写回答

2条回答 默认 最新

  • Roc-xb 领域专家: 后端开发技术领域 2022-05-22 05:49
    关注

    因为当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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月22日
  • 已采纳回答 5月22日
  • 创建了问题 5月22日