【发布时间】:2022-11-21 05:32:32
【问题描述】:
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))))
对于非常大的整数,计算机在求数字乘积时会变得非常迟钝;而且我知道 1 GB 的 RAM 可以存储至少 2^8000000000 位数字,但是这个程序在达到这个限制之前就变慢了。
我希望使用平方求幂来提高程序进行乘法运算的速度,但似乎程序存储如此大的整数时出现了问题。
【问题讨论】:
-
如果你想知道的是2^66666666的位数,我想可能有比实际计算2^66666666更好的算法。
-
没有什么可以存储那么多数字正如你所说。一个 GB 有 8_000_000_000 位,因此它可以存储那么多二进制数字,这些数字可以表示 2^800000000 个不同的数字,但您可以只存储其中一个。
-
在您的代码中添加一些打印,以查看它从哪里开始卡住以及卡住多长时间。获取字符串表示很可能不是一个好主意,因为该字符串有超过 2000 万个字符。
标签: python