为什么我的程序说项目欧拉#3(Java)的整数过大?

use*_*627 1 java

这是我的代码:

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

    public static long findLargestPrimeFactor(long n)
    {
        long max=0;
        for(long factor=2; factor<n; factor++)
        {
            if(n % factor==0)
            {
                if(isPrime(n/factor)==true)
                {
                    max=factor;
                }
            }
        }
        return max;
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,它表示整数600851475143太大了.谁能帮我?

Jam*_*mes 7

我打算打赌你打电话

 isLargestPrimeFactor(600851475143);
Run Code Online (Sandbox Code Playgroud)

因为这是Project Euler#3中给出的问题.这将无法编译并出现错误:

  error: integer number too large: 600851475143
Run Code Online (Sandbox Code Playgroud)

正确?如果是这种情况,请尝试:

 isLargestPrimeFactor(600851475143L);
Run Code Online (Sandbox Code Playgroud)

"L"后缀告诉编译器你的意思是它是一个长文字,而不是一个int(否则编译器会将它视为整数文字,并且它太大而不适合int)