static void Main(string[] args)
var largestPrimeFactor = LargestPrimeFactor(number);
Log("Largest Prime: " + largestPrimeFactor);
private static long? LargestPrimeFactor(long number)
for (var i = 2; i < number; i++)
if (IsPrime(i) && IsFactor(i, number) && i > lpf)
private static bool IsPrime(long number)
for (var i = 2; i < Math.Sqrt(number); i++)
private static bool IsFactor(long denominator, long numerator)
return numerator % denominator == 0;
private static Timer _progressDotsTimer;
private static void RegisterHandlers()
Console.CancelKeyPress += delegate
Log("Did not finish.... Aborting...");
private static void Log(string str)
Console.WriteLine(DateTime.Now.ToLongTimeString() + ": " + str);
private static void StartProgressDots()
TimerCallback printDots = _ =>
Thread.Sleep(TimeSpan.FromMilliseconds(1500));
_progressDotsTimer = new Timer(printDots, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
private static void StopProgressDots()
_progressDotsTimer.Dispose();