对“修复我的代码”帖子感到抱歉
编辑:与语法更多相关for
循环比质数,现在也解决了。
我的任务是从控制台获取一个 int 并打印出(在单独的行上)从 1 到 n(含)的所有素数。
我的方法从 n 开始,检查是否为素数,然后将 n 递减 1 并循环直到 n=2。
为了检查一个数字是否是素数,我运行一个循环,检查该数字除以 x 的余数是否等于 0,其中 x 从 2 开始,到 root(n) 停止。
现在这一切在理论上都是有效的,阅读我的代码我看不出哪里出了问题。
public class Prime {
public static boolean isPrime(int n) {
boolean result = true;
for (int x = 2; x>=sqrt(n); x++) {
if ((n % x) == 0) {
result = false;
break;
} else {
x++;
}
}
return result;
}
public static void main(String[] args) {
Scanner intIn = new Scanner(System.in);
int i = intIn.nextInt();
while (i>=2) {
if (isPrime(i)) {
System.out.println(i);
i--;
} else {
i--;
}
}
}
}
例如,输入 10 将返回 10(以及 9,8,7,6,5,3),即使 isPrime() 检查是否 10 % 2 == 0,然后设置result
为假。
我在这里缺少什么?
我再次为这个恼人的(稍微重复的)问题道歉。
条件在for
循环的条件是continue循环,而不是条件stop it。你需要更换>=
with <=
:
for (int x = 2; x<=sqrt(n); x++) {
// Here -----^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)