【发布时间】:2013-07-05 03:36:46
【问题描述】:
由于某种原因,我的第二个 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);
}
}
我知道还有其他方法可以测试素数,但目前我想在这里尝试使用我的方法。如果它有效,它似乎会很有效,因为一旦我得到第一个素数,它就完成了。
【问题讨论】:
-
您能否也添加领事输出。这样我们就知道到达了哪些打印语句。
-
运行:假设 1000 是素数。循环直到我们除以 500 89u3489ty9ht8whtiwth 1000 是素数 1000 BUILD SUCCESSFUL(总时间:0 秒)
-
对不起,那里的乱码文本,我把它放在那里只是为了看看它是否会执行,但后来我在发布之前从我的代码中删除了该代码......就在如果您想知道从 500 到 1000 开始的文本字符串在哪里。
-
好问题。喜欢玩素数。聪明人的整个职业生涯都在这样做:)
标签: java math for-loop nested-loops