逻辑上感觉没啥毛病,但就是输出不出来,介是怎么一回事

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

}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7808977
  • 这篇博客也不错, 你可以看下数据结构算法-----查找的那些事
  • 您还可以看一下 王志东老师的单片机应用之技能进阶课程中的 单片机内置上电复位功能的应用注意事项小节, 巩固相关知识点
  • 除此之外, 这篇博客: 算法 二分查找的变种以及注意事项中的 变种 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    问题的根本原因是条件判断的位置不正确,导致无法将结果输出。以下是对代码的修改建议:

    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来确定是否输出结果。

    通过这种修改,我们可以确保每次判断的结果能够正确输出。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^