void NotPrime() { Assert.False(MillerRabin.IsPrime(0)); Assert.False(MillerRabin.IsPrime(1)); Assert.False(MillerRabin.IsPrime(57)); Assert.False(MillerRabin.IsPrime(3215031751)); }
void Prime() { Assert.True(MillerRabin.IsPrime(2)); Assert.True(MillerRabin.IsPrime(3)); Assert.True(MillerRabin.IsPrime(11)); Assert.True(MillerRabin.IsPrime(100003)); Assert.True(MillerRabin.IsPrime(679067)); Assert.True(MillerRabin.IsPrime(1000000007)); Assert.True(MillerRabin.IsPrime(1000000000000000003)); var e64 = "10000000000000000000000000000000000000000000000000000000000000057"; Assert.True(MillerRabin.IsPrime(BigInteger.Parse(e64))); //素数大富豪 var primeMillionaire = "99998888777766665555444433332222131313131313121212121111111011010101111"; Assert.True(MillerRabin.IsPrime(BigInteger.Parse(primeMillionaire))); //メルセンヌ素数 var mersennePrime12th = BigInteger.Pow(2, 127) - 1; Assert.True(MillerRabin.IsPrime(mersennePrime12th)); }