首页 > 解决方案 > 应该打印前 100 个素数的程序,只打印 0 和 1

问题描述

public class Programma{
    public static void main(String args[]){
        int flag=0;
        for(int i=0;i<100;++i){
            for(int j=1;j<i;++j){
                if((i%j)==0)
                    flag=1;
                    break;
            }
            if (flag==0)
                System.out.print(i + " ");
            flag = 0;
        }
    }
}

输出:

$ java Programma 
0 1 

我真的不明白为什么..我已经多次检查代码并找不到错误。

标签: java

解决方案


您忘记在 if 中添加大括号:

            if((i%j)==0) {
                flag=1;
                break;
            }

所以只有第一行在条件下,每次都执行中断。

然后你有一个逻辑错误,用 2 开始第二个循环:

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

现在你的代码可以工作了。要了解原因,请添加一个额外的 println ,例如

public class Programma{
    public static void main(String args[]){
        int flag=0;
        for(int i=1;i<100;++i){
            for(int j=2;j<i;++j){
                if((i%j)==0){
                    System.out.println("# " + i + "/" + j);
                    flag=1;
                    break;
                }
            }
            if (flag==0)
                System.out.println(i + " ");
            flag = 0;
        }
    }
}

并尝试使用/不更改 for 循环的起始值。


推荐阅读