-2

我已经很努力了,但由于某种原因,我想不出一种方法来做 a^(b^c) mod p。我能够看到 a^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)
4

1 回答 1

2

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

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

正如建议的那样,一种更有效的方法是使用Python 的内置pow()方法:

def modular_pow(a, b, c, p):
    return pow(a, b**c, p)
于 2013-04-11T04:41:25.670 回答