我努力了,但出于某种原因无法想办法做某个^(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)
答案 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)