【发布时间】:2013-02-23 03:05:26
【问题描述】:
我正在尝试解决来自http://projecteuler.net 的问题 3。但是,当我运行东西程序时,什么都没有打印出来。 我究竟做错了什么? 问题:600851475143这个数的最大质因数是多少?
public class project_3
{
public boolean prime(long x) // if x is prime return true
{
boolean bool = false;
for(long count=1L; count<x; count++)
{
if( x%count==0 )
{
bool = false;
break;
}
else { bool = true; }
}
return bool;
}
public static void main(String[] args)
{
long ultprime = 0L; // largest prime value
project_3 object = new project_3();
for(long x=1L; x <= 600851475143L; x++)
{
if( object.prime(x)==true )
{
ultprime = ((x>ultprime) ? x : ultprime);
}
}
System.out.println(ultprime);
}
}
【问题讨论】:
-
for(long x=1L; x<=600851475143L;x++)- 嗯...这需要一段时间... -
以
count=2L开头 -
你应该在
sqrt(number)上停止for-loop。 -
如果你正在寻找最大的,那么我会从相反的方向开始
-
@JasonSperske 不,你不知道。从 600851475143 开始倒数是非常低效的。
标签: java primes prime-factoring factors factorization