예제 #1
0
 private static BigInteger ExpMod(BigInteger number, BigInteger exponent, BigInteger modulo)
 {
     if (exponent.Equals(BigInteger.Zero))
     {
         return BigInteger.One;
     }
     BigInteger t = BigInteger.Pow(ExpMod(number, exponent / Two, modulo), 2).Mod(modulo);
     if (!exponent.IsEven)
     {
         t *= number;
         t = t.Mod(modulo);
     }
     return t;
 }