【问题标题】:Why is my program saying that the integer number is too large for Project Euler #3 (Java)? [duplicate]为什么我的程序说整数对于 Project Euler #3 (Java) 来说太大了? [复制]
【发布时间】:2013-09-25 04:25:01
【问题描述】:

这是我的代码:

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 太大了。谁能帮帮我?

【问题讨论】:

  • 我在您的代码中没有看到对该数字的任何引用。您是否遇到运行时异常?给你这个信息的“它”是什么?
  • 将所有longs 更改为doubles
  • 你是如何调用findLargestPrimeFactor 方法的?你在哪里看到这个错误?

标签: java


【解决方案1】:

我打赌你打电话

 isLargestPrimeFactor(600851475143);

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

  error: integer number too large: 600851475143

对吗?如果是这种情况,请尝试:

 isLargestPrimeFactor(600851475143L);

“L”后缀告诉编译器您的意思是它是一个 long 字面量,而不是一个 int(否则编译器会将它视为一个整数字面量,并且它太大而无法放入 int)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2013-06-07
    • 2011-07-29
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多