Int64 i = 0, largestPrime = 0, N = 600851475143;
Console.WriteLine("Finding the largest prime factor for number: {0}", N);
Int64 squareRootNumber = Convert.ToInt64(System.Math.Ceiling(System.Math.Sqrt(N))), squareRootPrimeNumberTest = 0;
for (Int64 p = 3; ; p += 2)
squareRootPrimeNumberTest = Convert.ToInt64(System.Math.Ceiling(System.Math.Sqrt(p)));
for (i = 3; i <= squareRootPrimeNumberTest; i += 2)
if (i > squareRootPrimeNumberTest)
if (p > squareRootNumber)
Console.WriteLine("Largest prime factor: {0}", largestPrime);