尽管不是Java语言,但我认为您可以做到以下几点。基本上,只需要测试奇数除数就可以减少迭代次数,并且最多可以减少数字的平方根。这是一种蛮力方法,可在C#中立即给出结果。
static bool OddIsPrime (long oddvalue) // test an odd >= 3 { // only test odd divisors. for (long i = 3; i <= Math.Sqrt(oddvalue); i += 2) { if (value % i == 0) return false; } return true;}static void Main(string[] args){ long max = 600851475143; // an odd value long maxFactor = 0; // only test odd divisors of MAX. Limit search to Square Root of MAX. for (long i = 3; i <= Math.Sqrt(max); i += 2) { if (max % i == 0) { if (OddIsPrime(i)) // i is odd { maxFactor = i; } } } Console.WriteLine(maxFactor.ToString()); Console.ReadLine();}


