Ejemplo n.º 1
0
// Returns (*this^exponent) % modulus.
Integer Integer::modpow(const Integer& exponent, const Integer& modulus) const
{
    Integer m(1), b = *this;
    Integer p = exponent, mod = modulus;

    while (p > ZERO) {
        if (p.odd()) {
            m = (m * b) % mod;
        }

        b = b.square() % mod;
        p /= TWO;
    }

    return m % mod;
}