pow или * * для очень большого числа в Python

я пытаюсь вычислить некоторые num1**num2 в Python. Но проблема в том, что num1 is 93192289535368032L и num2 is 84585482668812077L, которые являются очень большом количестве.

я попробовал несколько методов следующим образом: Во-первых, я попытался вычислить его с помощью ** оператора. Но это заняло слишком много времени (я ждал около 2 часов, но не получил результата).

во-вторых, я использовал math.pow(num1, num2). Но я понял вот что:--13-->

Traceback (most recent call last):   File "<pyshell#23>", line 1, in <module>
    math.pow(84585482668812077L, 93192289535368032L)
OverflowError: math range error

наконец, я использовал numpy.power:

numpy.power(84585482668812077, 93192289535368032)
-9223372036854775808

как видите, это дало мне минус.

что я действительно хочу сделать, это result = (num1**num2) а то result % num3. Итак, мне нужно рассчитать это значение мощности эффективно.

как я могу это сделать?

1 ответов


вы должны передать num3 в качестве 3-го параметра в pow

pow(...)
    pow(x, y[, z]) -> number

    With two arguments, equivalent to x**y.  With three arguments,
    equivalent to (x**y) % z, but may be more efficient (e.g. for longs).