java - for循环之外的语句不会被执行

标签 java loops for-loop unreachable-code

我是 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/

相关文章:

java - 在java中循环selenium webdriver脚本但具有不同的值

python - 变为 false 后如何返回到代码开头?

python - 向量化 Pandas DataFrame

javascript - 在javascript中使用for循环验证多个下拉列表

java - 如何在 JAVA 中检查 map 中存在的值

java - 我们如何在 FXML 中定义上下文菜单?

c++ - 用指定范围内的随机数填充数组 (C++)

java - Eclipse:Java 已启动但返回退出代码 -1073741571

java - 我可以自动将现有文本传递到方法参数中吗?

java - 使用 Sql Server 的 Hibernate 因 nvarchar 字段失败而出现 "No Dialect mapping..."