这是我的代码:

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;
    }


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

最佳答案

我打赌你打电话

 isLargestPrimeFactor(600851475143);


因为这就是欧拉计划3中给出的问题。这将无法编译并显示错误:

  error: integer number too large: 600851475143


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

 isLargestPrimeFactor(600851475143L);


“ L”后缀告诉编译器,您的意思是它是一个长整数,而不是整数(否则,编译器会将其视为整数常量,并且太大而无法容纳int)

关于java - 为什么我的程序说整数对于Euler#3(Java)项目太大?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18996195/

10-12 03:00