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).