这是我的代码:
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/