首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有更快的方法来乘法非常大的整数或将它们存储在多个缓存/变量中,而不是一个来提高性能?

是否有更快的方法来乘法非常大的整数或将它们存储在多个缓存/变量中,而不是一个来提高性能?
EN

Stack Overflow用户
提问于 2022-11-20 21:22:16
回答 2查看 29关注 0票数 -3
代码语言:javascript
复制
def exponentiation(base,n):
    if n == 0:
        return 1
    if n % 2 == 0:
     return exponentiation(base*base, n/2)
    else:
        return base * exponentiation(base * base, (n-1)/2)

if __name__ == '__main__':
    print(len(str(exponentiation(2, 66666666))))

对于非常大的整数,计算机在寻找数字乘积时会变得非常缓慢;我知道1G内存可以存储至少2^8000000000位数字,但是这个程序在达到这个限制之前就已经慢下来了。

为了提高程序进行乘法的速度,我希望用平方方法进行幂运算,但似乎程序存储如此大的整数存在问题。

EN

回答 2

Stack Overflow用户

发布于 2022-11-20 21:36:06

只需使用内置的**操作符即可。它的工作速度快得多。

代码语言:javascript
复制
big_number_a = 2 ** 66666666
big_number_b = exponentiation(2, 66666666)
big_number_a == big_number_b  # True

另外,不要尝试使用str将这么大的数字转换为十进制字符串,除非您真的必须这样做。这部分是超级慢

票数 1
EN

Stack Overflow用户

发布于 2022-11-20 21:32:32

是的,有一个更快的方法:

代码语言:javascript
复制
exponentiation = pow

这大约是你的方法的两倍,它也适用于非整数。

但是,代码中的指数时间是可以忽略不计的。其大部分时间用于将整数转换为字符串。如果您想要整数所拥有的位数,请改用int(math.log10(n)) + 1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74512116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档