【发布时间】:2018-01-13 19:35:20
【问题描述】:
对于“修复我的代码”帖子感到抱歉
编辑:与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 设置为 false。
我在这里错过了什么??
再次为这个烦人(略有重复)的问题道歉。
【问题讨论】:
标签: java loops for-loop primes