我正在尝试在Python中计算一些num1**num2
。但问题是num1
是93192289535368032L
而num2
是84585482668812077L
,这是非常大的数字。
我尝试了以下几种方法:首先,我尝试使用**
运算符来计算它。但是花了太多时间(我等了大约2个小时,但没有结果)。
其次,我使用math.pow(num1, num2)
。但我得到了这个:
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
。所以,我需要有效地计算这个功率值。
我该怎么做?
答案 0 :(得分:15)
您应该将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).