如何计算大指数的数字

时间:2019-06-15 11:35:01

标签: python python-3.x largenumber

我正在编写一个程序,需要计算出巨大的数字。

    k = int(input())
    print(int((2**k)*5 % (10**9 + 7))

在这里,k为10 9 的数量级 正如预期的那样,这相当慢(最多需要5秒钟进行计算),而我的程序需要在1秒内完成计算。 在网上进行了一些研究之后,我发现了一个函数pow(),并通过编写

     p = 10**9 + 7
     print(int(pow(2, k- 1,p)*10))

这对于少量数字效果很好,但对大量数字会造成混乱。我能理解为什么会这样(因为这本质上不是我想要计算的,并且具有如此大的数量的模运算不会影响具有小k值的计算)。

我还找到了gmpy2和numpy之类的库,但我不知道如何使用它们,因为我只是python的初学者。
那么我该如何为要计算的表达式写一个表达式,该表达式的运行速度足够快,并且不会大量出错呢?

1 个答案:

答案 0 :(得分:2)

您可以通过将要从中获取模数的数字作为内置pow的第三个参数,并将结果乘以5,来优化操作

def func(k):

    x = pow(2, k, pow(10,9) + 7) * 5
    return int(x)