java - 为什么我的程序说整数对于 Project Euler #3 (Java) 来说太大了?

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

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

最佳答案

我打赌你会跟注

 isLargestPrimeFactor(600851475143);

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

  error: integer number too large: 600851475143

对吗?如果是这样,请尝试:

 isLargestPrimeFactor(600851475143L);

“L”后缀告诉编译器你的意思是它是一个 long 文字,而不是一个 int(否则编译器会把它当作一个整数文字,而且它太大而无法放入 int 中)

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

相关文章:

java - PMD 和 FindBugs 冲突

java - `obj` 中的 `synchronized(obj) {...}` 参数的目的是什么?

java - 如何模拟Android GC杀死应用程序

java - 如何展平一组集合,我应该首先这样做吗?

java - 我应该何时以及如何使用 ThreadLocal 变量?

java - 如何提高大文件的加密/解密性能

java - 关于简单计算器中的布局

java - 如何在 java 中将消息附加到 unix 邮箱?

java - JEdi​​torPane 中带有超链接的本地 HTML 将被方法拦截

java - 将kafka与jpa一起使用时的良好做法