No for循环将在for循环中运行。测试质数

时间:2013-07-05 03:36:47

标签: java math for-loop nested-loops

出于某种原因,我的第二个for循环根本不会运行。事实上,我放在那里的任何其他类型的for循环也不会运行。我测试只是在println之后放置一个简单的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);
    }
}

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

1 个答案:

答案 0 :(得分: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);
}
相关问题