/// <summary> /// Runs an infinite find test to determine time to result. /// </summary> public void FindTest() { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); TimeSpan time0 = new TimeSpan(0); int counter = 0; while (true) { DateTime start0 = DateTime.Now; Emil.GMP.BigInt p0 = null; Emil.GMP.BigInt sp0 = null; ThreadedPrimeGenerator g0 = new ThreadedPrimeGenerator(null); g0.FindPrimeAndSafePrime(4096, out p0, out sp0); time0 = time0.Add(DateTime.Now.Subtract(start0)); counter++; double seconds = time0.TotalSeconds / (double)counter; Console.WriteLine("avg={0}", DateTime.Now.AddSeconds(seconds).Subtract(DateTime.Now).ToString()); } }
/// <summary> /// Finds both as prime and a larger safe prime. /// </summary> /// <param name="bitLength">Length in bits of the prime.</param> /// <param name="prime">Random prime number.</param> /// <param name="safePrime">Random safe prime number.</param> /// <param name="feedback">Feedback delegate or null.</param> public static void FindPrimeAndSafePrimeThreaded(int bitLength, out BigInt prime, out BigInt safePrime, PrimeGenerationFeedBack feedback) { ThreadedPrimeGenerator generator = new ThreadedPrimeGenerator(feedback); generator.FindPrimeAndSafePrime(bitLength, out prime, out safePrime); }