算法 - 取幂 -

时间:2013-04-11 04:23:11

标签: python algorithm

我努力了,但出于某种原因无法想办法做某个^(b ^ c)mod p。我能够看到线程为^ b ^ c等.. mod p,即使这只是一个小小的改变,我也无法做到这一点

这就是我在Python代码中所拥有的:

def exponent_mod(a,b,c,m):

def modular_pow(base, exponent, modulus):
    result = 1
    while (exponent > 0):
        if (exponent % 2 == 1):
           result = (result * base) % modulus
        exponent = exponent >> 1
        base = (base * base) % modulus
    return result

m_ = modular_pow(a, b, m)
return modular_pow(m_, c, m)

1 个答案:

答案 0 :(得分:2)

我没有看到有额外方法的正当理由(我也不理解位移的意图或目的)。如果你想得到一个 b c mod p,那么就让我们直接进行。

def modular_pow(a, b, c, p):
    return (a**(b**c)) % p

如建议的那样,更有效的方法是使用Python's built-in pow() method:

def modular_pow(a, b, c, p):
    return pow(a, b**c, p)