gpt4 book ai didi

java - 检查 int 是否为素数 Java

转载 作者:行者123 更新时间:2023-12-02 13:45:29 24 4
gpt4 key购买 nike

对“修复我的代码”帖子感到抱歉

编辑:与 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,然后设置结果 为 false。我在这里缺少什么??

我再次为这个恼人的(有点重复)问题道歉。

最佳答案

for中的条件循环是继续循环的条件,而不是停止循环的条件。您需要替换>=<= :

for (int x = 2; x<=sqrt(n); x++) {
// Here -----^

关于java - 检查 int 是否为素数 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45530924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com