【发布时间】:2014-12-14 22:17:04
【问题描述】:
我应该为 Java Intro 类编写一个程序,该类列出质数直到用户输入的数字。但是,使用我的代码,如果用户输入一个质数,我的程序不会列出该数字,即使它应该在质数时这样做。有人可以提示我为什么它不起作用吗?
int userNum=kbd.nextInt();
if (userNum<2){
System.out.println("Not a valid number.");
System.exit(1);
}
System.out.println("The prime numbers up to your integer are:");
for (int num1 = 2; num1<userNum; num1++) {
boolean prime = true;
for (int num2 = 2; num2 < num1; num2++) {
if (num1 % num2 == 0) {
prime = false;
break;
}
}
// Prints the number if it's prime.
if (prime) {
System.out.print(num1 + " ");
}
}
例如,当我输入“19”时,程序会打印直到“17”(包括“17”)的所有素数。 谢谢!
【问题讨论】:
-
可能是因为这个
num1<userNum。尝试将其更改为num1<=userNum -
欢迎来到编程世界和臭名昭著的 OBOE:en.wikipedia.org/wiki/Off-by-one_error :)