我应该为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 + " ");
}
}
例如,当我输入&#34; 19,&#34;该程序打印所有素数,包括&#34; 17。&#34; 谢谢!
答案 0 :(得分:1)
您需要num1
将值userNum
作为要检查的最后一个值。
因此,您需要将num1 < userNum
替换为num1 <= userNum
。
答案 1 :(得分:0)
你的循环条件为num1 < userNum
。这意味着它允许所有数字低于userNum
。您想要的是以下所有数字,包括userNum
,因此您需要num1 <= userNum
。
循环的开始就是这样:
for (int num1 = 2; num1 <= userNum; num1++) {
答案 2 :(得分:0)
更改此
num1<userNum
到
num1<=userNum
在您for
循环中两个数字相等之前停止的那一刻。
答案 3 :(得分:0)
将for语句的结束条件更改为num1&lt; = userNum。