计算3↑↑↑3(在Python中)

原边

我正在做一个关于格雷厄姆数的演示,我想计算前几个↑(即3↑3、3↑↑3和3↑↑↑3),以使他们了解在这样的情况下它有多大短时间。我根据箭头符号的定义在python中编写了一些幼稚/直接的代码,如下所示:

def arrow2(a,b):
    c=1
    for i in np.arange(b):
        c=a**c
    return c

def arrow3(a,b):
    c=1
    for i in np.arange(b):
        c=arrow2(a,c)
    return c

尽管使用了“长”整数(无限制)和numpy数组(无限制),但是代码自然会在运行时占用太多内存,并且将花费很长的时间来处理。这个问题有方法解决吗?(或者有人已经知道答案了吗?)谢谢!

蒂姆·彼得斯

在我的评论上,我只想充实一点,以掌握这种规模的数字是多么无望。

我想你已经知道了

3 ↑↑↑ 3 =
3 ↑↑ (3 ↑↑↑ 2) =
3 ↑↑ (3 ↑↑ 3) =
3 ↑↑ (3 ↑ 3 ↑ 3) =
3 ↑↑ (3 ↑ 27) =
3 ↑↑ 7625597484987

因此这减少了研究细菌的生长3 ↑↑ i让我们看看它是如何增长的:

3 ↑↑ 0 = 1
3 ↑↑ 1 = 3**(3↑↑0) = 3**1 = 3
3 ↑↑ 2 = 3**(3↑↑1) = 3**3 = 27
3 ↑↑ 3 = 3**(3↑↑2) = 3**27 = 7625597484987
3 ↑↑ 4 = 3**(3↑↑3) = 3**7625597484987 = ...?

我们已经超出了大多数个人计算机上可行的计算范围。

>>> import math
>>> math.log10(3) * 3**27
3638334640024.0996

这是的以10为底的对数3 ↑↑ 4,表明后者的数字超过3万亿(十进制)。即使使用每十进制数字4位的自定义编码,也将需要超过1.5 TB的磁盘空间来存储它-而且很少有计算机具有足够的RAM来直接计算它。

然后3 ↑↑ 5依次将3提升到该万亿位数。我们通常使用的字词和符号已经不足以给出关于它有多大的任何实际想法,并且没有计算机具有足够的RAM或磁盘空间来处理它。

而我们最多3 ↑↑ 5仍有数万亿个图层需要达到3 ↑↑ 7625597484987= 3↑↑↑3这超出了人类的理解力。虽然,是的,无限多个整数甚至更大;-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章