-2

私は一生懸命試しましたが、何らかの理由で a^(b^c) mod p を実行する方法が思いつきません。a^b^c etc .. 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

追加のメソッドを用意する正当な理由がわかりません (また、ビット シフトの意図や目的もわかりません)。a 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 に答える