gpt4 book ai didi

java - for循环外的语句没有被执行

转载 作者:行者123 更新时间:2023-11-30 08:26:16 25 4
gpt4 key购买 nike

我是 Java 新手。我找到了一个名为 project eulder 的网站,正在练习一个问题。我不明白为什么下面的程序在我输入 System.out.println(max) 时不显示任何内容;进入 for 循环它可以工作,但显示所有素数,包括最大的素数。谁让我只显示最大的素数?

public class LargestPrimeFactor {

public static void main(String[] args) {
long x = 600851475143L;
int max = 0;
for (int i = 1; i <= x; i++) {
if (x % i == 0)
if (isPrime(i))
max = i;
}
System.out.println(max);

}

public static boolean isPrime(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0)
return false;
}
return true;
}
}

最佳答案

你写了一个无限循环:600851475143L大于可以存储在 int 中的最大值, 所以 i <= x永远是true .

改变 i和所有其他相关变量 long可能会解决这个问题,但你仍然需要重新考虑你的算法。检查 600851475143 个数是否为素数会花费太长时间。

提示:一旦您找到一个整除 x 的数字, 你可以划分 x按那个数字...(希望这不会破坏乐趣)

关于java - for循环外的语句没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636647/

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