public void FindPrimesTo(IFindPrimesTo finder, IIsPrime primeChecker, int maxNumber) { Stopwatch sw = new Stopwatch(); sw.Restart(); // Generating prime numbers. finder.Execute(maxNumber, primeChecker); ICollection <int> primeNumbers = new List <int>(); sw.Stop(); // Verifying the passed back numbers are prime. if ((primeNumbers != null) && (primeNumbers.Any())) { StringBuilder result = new StringBuilder(); string message = string.Empty; sw.Restart(); message = $"Verification started on {primeNumbers.Count.ToString("#,##0")}"; result.AppendLine(message); bool nonPrimeFound = false; foreach (int prime in primeNumbers) { for (int i = 0; i <= prime; i++) { if ((prime % i) == 0) { break; } } if (nonPrimeFound) { message = $"{prime.ToString("#,##0")} was found to be a non prime number during the verification process."; result.AppendLine(message); //Log(message); //throw new Exception(); break; } } sw.Stop(); message = $"Verification {(nonPrimeFound ? "Failed" : "Passed")} taking {Utilities.ElaspedTimeFormatter(sw)}"; result.AppendLine(message); //Log(message); } }
/// <summary> /// /// </summary> /// <param name="findPrimesToTester"></param> /// <param name="isPrimeTester"></param> /// <param name="numberOfPrimesToFind"></param> /// <returns></returns> protected static ICollection <int> FindPrimesToTimer(IFindPrimesTo findPrimesToTester, IIsPrime isPrimeTester, int numberOfPrimesToFind) { ICollection <int> result = new List <int>(); System.Diagnostics.Debug.WriteLine($"{findPrimesToTester.GetType().Name} : {isPrimeTester.GetType().Name}"); Stopwatch sw = new Stopwatch(); sw.Restart(); findPrimesToTester.Execute(numberOfPrimesToFind, isPrimeTester); result = findPrimesToTester.PrimeNumbers; sw.Stop(); Console.WriteLine($"{DateTime.Now.ToString()} : {findPrimesToTester.GetType().Name} : {isPrimeTester.GetType().Name} : Result = {result.Count.ToString("#,##0")} : Time Taken : {PrimeNumbers.Model.Utilities.ElaspedTimeFormatter(sw.Elapsed)}"); return(result); }