private static void BenchmarkPrimalityTests() { var limit = (int)1e6; var sw = Stopwatch.StartNew(); var last = PrimeNumberUtil.GetPrimes(new IterativePrimalityTest()).First(x => x > limit); sw.Stop(); var timeIterativePrimalityTest = sw.Elapsed; Console.WriteLine($"Iterative test took {timeIterativePrimalityTest} for {limit} iterations."); sw = Stopwatch.StartNew(); last = PrimeNumberUtil.GetPrimes(new FermatPrimalityTest()).First(x => x > limit); sw.Stop(); var timeFermatPrimalityTest = sw.Elapsed; Console.WriteLine($"Fermat test took {timeFermatPrimalityTest} for {limit} iterations."); sw = Stopwatch.StartNew(); last = PrimeNumberUtil.GetPrimes(new MillerRabinPrimalityTest()).First(x => x > limit); sw.Stop(); var timeMillerRabinPrimalityTest = sw.Elapsed; Console.WriteLine($"Miller-Rabin test took {timeMillerRabinPrimalityTest} for {limit} iterations."); }
static void Main(string[] args) { try { // retrieve the limits. int lowerLimit = 1; int upperLimit = 20; RetrieveUpperAndLowerLimit(out lowerLimit, out upperLimit); //Instiate the class. PrimeNumberUtil prime = new PrimeNumberUtil(); //Get List of Prime numbers string primes = prime.GetListOfPrimeNumbers(lowerLimit, upperLimit); //Wriite out to console Console.WriteLine("The prime numbers are:"); Console.WriteLine(primes); //Read to line. Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(String.Format("There was an exception while attemption to find the prime numbers.", ex)); } }
public void ListofPrimeNumbersTest_ArgumentException() { //Initiate class. PrimeNumberUtil prime = new PrimeNumberUtil(); //Throws argument exception when given bad order of limits. Assert.ThrowsException <ArgumentException>(() => prime.GetListOfPrimeNumbers(20, 0)); }
private static void GetPQ(long minP, long minQ, out long p, out long q) { p = PrimeNumberUtil.GetPrimes(new FermatPrimalityTest()) .Where(x => x % 4 == 3) .Where(x => x > minP) .First(); q = PrimeNumberUtil.GetPrimes(new FermatPrimalityTest()) .Where(x => x % 4 == 3) .Where(x => x > minQ) .First(); }
public void ListofPrimeNumbersTest_IsEmpty() { //Initiate class. PrimeNumberUtil prime = new PrimeNumberUtil(); //Get the string. string primeNumbers = prime.GetListOfPrimeNumbers(1, 1); //Make sure it is not null. Assert.IsTrue(string.IsNullOrEmpty(primeNumbers)); }
public void ListofPrimeNumbersTest_ReturnList() { //Initiate class. PrimeNumberUtil prime = new PrimeNumberUtil(); //Get the string. string primeNumbers = prime.GetListOfPrimeNumbers(1, 20); //Make sure it is not null. Assert.IsNotNull(primeNumbers); }
private static void ComparePrimalityTests() { const int limit = (int)1e3; var iterativeResult = PrimeNumberUtil.GetPrimes(new IterativePrimalityTest()) .TakeWhile(x => x < limit).ToList(); var fermatResult = PrimeNumberUtil.GetPrimes(new FermatPrimalityTest()) .TakeWhile(x => x < limit).ToList(); var millerRabinResult = PrimeNumberUtil.GetPrimes(new MillerRabinPrimalityTest()) .TakeWhile(x => x < limit).ToList(); Console.WriteLine($"Iterative Method yielded {iterativeResult.Count} primes < {limit}"); Console.WriteLine(String.Join(", ", iterativeResult)); Console.WriteLine($"Fermat Method yielded {fermatResult.Count} primes < {limit}"); Console.WriteLine(String.Join(", ", fermatResult)); Console.WriteLine($"Miller-Rabin Method yielded {millerRabinResult.Count} primes < {limit}"); Console.WriteLine(String.Join(", ", millerRabinResult)); Console.WriteLine("Miller-Rabin is missing: " + String.Join(", ", iterativeResult.Except(millerRabinResult))); }