模幂运算中右到左方法的时间复杂度是多少?

时间:2015-02-01 20:51:22

标签: algorithm

http://en.wikipedia.org/wiki/Modular_exponentiation#Right-to-left_binary_method

模幂运算中从右到左方法的时间复杂度是多少?

是O(1)因为我们正在经历e的二进制表示,它是恒定时间吗?

int mod(int b, int e, int m) {
    b = b % m;
    int result = 1;

    while (e) {
        if (e % 2 == 1) {
            result = (result * b) % m;
        }
        b = (b * b) % m;
        e >>= 1;
    }
    return result;
}

0 个答案:

没有答案