Example #1
0
 public void MillerRabinTestForBigNumbers()
 {
     Assert.AreEqual(false, MillerRabinTest.Run(922337203685477580));
     Assert.AreEqual(false, MillerRabinTest.Run(4294967296));
     Assert.AreEqual(false, MillerRabinTest.Run(2073920666));
     Assert.AreEqual(false, MillerRabinTest.Run(825265));
     Assert.AreEqual(false, MillerRabinTest.Run(677789936));
     Assert.AreEqual(false, MillerRabinTest.Run(8911));
     Assert.AreEqual(false, MillerRabinTest.Run(5394826801));
     Assert.AreEqual(true, MillerRabinTest.Run(2147483629));
     Assert.AreEqual(true, MillerRabinTest.Run(2147483647));
     Assert.AreEqual(false, MillerRabinTest.Run(2102361656));
     Assert.AreEqual(false, MillerRabinTest.Run(757957974));
     Assert.AreEqual(true, MillerRabinTest.Run(2097665813));
     Assert.AreEqual(false, MillerRabinTest.Run(68812861848471));
     Assert.AreEqual(false, MillerRabinTest.Run(1592123869));
     Assert.AreEqual(false, MillerRabinTest.Run(1304627679));
     Assert.AreEqual(true, MillerRabinTest.Run(1000000007));
     Assert.AreEqual(true, MillerRabinTest.Run(104707));
     Assert.AreEqual(true, MillerRabinTest.Run(104711));
     Assert.AreEqual(true, MillerRabinTest.Run(104717));
     Assert.AreEqual(true, MillerRabinTest.Run(961748941));
     Assert.AreEqual(true, MillerRabinTest.Run(982451653));
     Assert.AreEqual(false, MillerRabinTest.Run(2455921));
     Assert.AreEqual(false, MillerRabinTest.Run(512461));
     Assert.AreEqual(true, MillerRabinTest.Run(175292000011));
     Assert.AreEqual(false, MillerRabinTest.Run(175292000065));
     Assert.AreEqual(true, MillerRabinTest.Run(175292000069));
 }
Example #2
0
 public void MillerRabinTestForSmallNumbers()
 {
     for (int n = 0; n <= 49; ++n)
     {
         Assert.AreEqual(_primesUpTo49.Contains(n), MillerRabinTest.Run((ulong)n));
     }
 }
Example #3
0
        private BigInteger GenerateRandomPrime()
        {
            var primeBigInteger = GenerateRandomByLength(keyLength);

            while (!MillerRabinTest.IsPrime(primeBigInteger, 10))
            {
                primeBigInteger++;
            }
            return(primeBigInteger);
        }
        public BigInteger Get(int n)
        {
            if (n % 8 != 0)
            {
                return(0);
            }
            BigInteger  res   = 0;
            List <Task> tasks = new List <Task>();

            for (int i = 0; i < 20; i++)
            {
                tasks.Add(Task.Run(() =>
                {
                    BigInteger number;
                    byte[] bytes = new byte[n / 8];
                    var rng      = new RNGCryptoServiceProvider();
                    do
                    {
                        lock (locker)
                        {
                            if (!res.IsZero)
                            {
                                return;
                            }
                        }
                        rng.GetBytes(bytes);
                        number = new BigInteger(bytes);
                        if (number < 0)
                        {
                            number *= -1;
                        }
                    }while (!MillerRabinTest.IsPrime(number, 10));
                    lock (locker)
                    {
                        res = number;
                    }
                }));
            }

            Task.WaitAll(tasks.ToArray());
            return(res);
        }
        public void IsProbablyPrimeTest()
        {
            var testUnderTest = new MillerRabinTest(10);

            Assert.IsTrue(testUnderTest.IsPrime(37));
        }
        public void IsProbablyCompositeTest()
        {
            var testUnderTest = new MillerRabinTest(10);

            Assert.IsFalse(testUnderTest.IsPrime(50));
        }
Example #7
0
        public void BigNotPrime1()
        {
            var notPrime1 = new BigInteger(6732366601);             // 82051 * 82051

            Assert.False(MillerRabinTest.IsPrime(notPrime1, k));
        }
Example #8
0
        public void BigNotPrime2()
        {
            var notPrime2 = new BigInteger(4202855089);             //58403* 71963

            Assert.False(MillerRabinTest.IsPrime(notPrime2, k));
        }
Example #9
0
        public void BigPrime3()
        {
            var prime3 = new BigInteger(9418227019);

            Assert.True(MillerRabinTest.IsPrime(prime3, k));
        }
Example #10
0
        public void BigPrime2()
        {
            var prime2 = new BigInteger(2854322099);

            Assert.True(MillerRabinTest.IsPrime(prime2, k));
        }
Example #11
0
        public void BigPrime1()
        {
            var prime1 = new BigInteger(6568056991);

            Assert.True(MillerRabinTest.IsPrime(prime1, k));
        }
Example #12
0
 public void SimplyTest3()
 {
     Assert.False(MillerRabinTest.IsPrime(8, k));
 }
Example #13
0
 public void SimpyTest()
 {
     Assert.True(MillerRabinTest.IsPrime(5, k));
 }