1

出于某种原因,我的第二个 for 循环根本不会运行。事实上,我放在那里的任何其他类型的 for 循环也不会运行。我测试只是在 println("looping until we 除以...); 之后放置一个简单的 for 循环;这也不会运行。我为测试添加的简单 for 循环就是这个。

for (int k = 0; k > 10; k++) {
   System.out.println(k);
}

这显然只会打印从 0 到 10 的值。但它不会执行。这是程序的实际代码。如果有人想知道它应该做什么,它需要一个范围,硬编码以进行测试,从 100 到 1000。它通过遍历从 2 到 1000 的所有数字来检查最后一个数字 1000 是否是素数/2查看余数是否为0,如果是,则该数不是质数,打破循环并检查下一个数。如果数字在没有将 isPrime 设置为 false 的情况下通过,那么它是一个素数,并且因为我们从最大的数字开始,它是列表中最大的素数,因此我们打破外循环并打印它。是的,这是使用 RMI 的家庭作业的一部分。我的 RMI 工作得很好,但是算法给我带来了麻烦,所以我决定从一个新程序开始,在我把它放入我的 PrimeImpl 类之前得到算法。这是代码。

public class PrimeTest {

    public static void main(String[] args) {

        int first = 100;
        int last = 1000;
        int biggest = 0;
        boolean isPrime = true;
        int i;

        for (i = last; i > first - 1; i--) {

            isPrime = true;
            System.out.println("Assume " + i + " is prime.");
            int halfI = i / 2;
            System.out.println("Looping until we divide by " + halfI);

            for (int j = 2; j > halfI; j++) {

                // Loop not entering. This statement doesnt print. Why?
                System.out.println(i + " modulus " + j + " = " + i % j);
                if (i % j == 0) {

                    isPrime = false;
                    System.out.println("Not a prime");
                    break;
                }
            }

            if (isPrime == true) {
                System.out.println(i + " is a prime");
                break;
            }
        }

        if (isPrime == true) {
            biggest = i;
        }

        if (isPrime == false) {
            biggest = 0;
        }

        System.out.println(biggest);
    }
}

我知道还有其他方法可以测试素数,但目前我想在这里尝试使用我的方法。如果它有效,它似乎会很有效,因为一旦我得到第一个素数,它就完成了。

4

1 回答 1

4
for (int k = 0; k > 10; k++) {
   System.out.println(k);
}

k不大于 10,因此循环将永远不会执行。我认为想要的是k<10,不是吗?

for (int k = 0; k < 10; k++) {
   System.out.println(k);
}
于 2013-07-05T03:38:47.977 回答