public void PassTest() { PrimeSieve pgAtkin = new SieveOfAtkin(100); Ticker t = new Ticker(); foreach (int i in pgAtkin) { MillerRabin.MillerRabinPass(2, i); } t.Tick("2Pass"); foreach (int i in pgAtkin) { MillerRabin.MillerRabinPass(3, i); } t.Tick("3Pass"); foreach (int i in pgAtkin) { MillerRabin.MillerRabinPass(7, i); } t.Tick("7Pass"); foreach (int i in pgAtkin) { MillerRabin.MillerRabinPass(61, i); } t.Tick("61Pass"); }
public void MillerRabinPassTest() { foreach (long lTestValue in laScatteredLongPrimes) { Assert.IsTrue(MillerRabin.MillerRabinPass(2L, lTestValue)); } }
public void StrongPseudoPrimes() { int iActualPrimeCount = 0; int iActualCompositeCount = 0; int iMRPrimeCount = 0; int iMRCompositeCount = 0; int iTotalCount = 0; for (int i = 1; i < pg.largestPrime(); i++) { iTotalCount++; if (pg.IsPrime(i)) { iActualPrimeCount++; } if (MillerRabin.MillerRabinPass(2, i)) { if (MillerRabin.MillerRabinPass(7, i)) { iMRPrimeCount++; } } } iActualCompositeCount = iTotalCount - iActualPrimeCount; iMRCompositeCount = iTotalCount - iMRPrimeCount; Debug.WriteLine("Total Count: " + iTotalCount); Debug.WriteLine("Actual - C: " + iActualCompositeCount + ", P: " + iActualPrimeCount); Debug.WriteLine("Miller Rabin - C: " + iMRCompositeCount + ", P: " + iMRPrimeCount); }