出于某种原因,我的第二个 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);
}
}
我知道还有其他方法可以测试素数,但目前我想在这里尝试使用我的方法。如果它有效,它似乎会很有效,因为一旦我得到第一个素数,它就完成了。