循环外的语句没有被执行

时间:2014-02-07 19:55:59

标签: 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;
    }
}

1 个答案:

答案 0 :(得分:3)

您编写了一个无限循环:600851475143L大于int中可存储的最大值,因此i <= x始终为true

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

提示:一旦找到一个除以x的数字,就可以将x除以该数字......(希望这不会破坏乐趣)