为什么这个程序没有输出任何东西

时间:2016-12-08 21:53:14

标签: java while-loop

public class oboroten3 {

public static void main(String[] args) {
    int i = 2;
    int b = 1000000;
    while (b > 2) {
        double d = Math.sqrt(b);
        long p = Math.round(d);
        int c = b % 10;
        if ((c == 1) || (c == 3) || (c == 7) || (c == 9)) {
            while ((i < p) && (b % i != 0)) {
                if (i == b - 1) {
                    System.out.print(b + ",");
                }
                i++;
            }
        }
        i = 2;
        b++;
    }

}
}

当我运行程序时没有任何事情发生,找到素数是有意义的,它是在我添加了取b的根部分之前工作的

2 个答案:

答案 0 :(得分:0)

对于初学者来说

while (b > 2)

当b已经设置为1000000,然后在每个循环上增加b

所以这将无限制地运行而不会停止。这可能是你应该解决的第一件事。

答案 1 :(得分:0)

我相信这种情况会阻止控件进入内部while循环,因此它不会打印任何内容:

(i < p)

在外while之前,i初始化为2,b初始化为1000000.现在,您的if条件(在内部while内)检查是否i等于b - 1,如果i小于p,则永远不可能实现这一点。因此,如果您删除(i < p)条件,它将正常工作。你的while循环是:

while (b % i != 0) {