【发布时间】:2015-01-01 11:14:08
【问题描述】:
假设这个计算在正常的I7cpu 上保持。
这个 n 的一部分看起来像:062818261573550755996975051396213990265395588957460690342970606032106870077208096704804861337086094604502447252509279335757453605836337900088980571550652843637152844978598425585659705979638641046274358312112553872770884438397651131234023085240167008580828612926148647820470126736393237752952205498922435592164336944705
事情就是这样发生的。
今天下午突然想到一个猜测。我想知道是否存在一个常量值c 使得2**x == 3**(x/c)
我算出了一个近似值:c = 1.5849116411760045
我创建了一个任意的x = 213145,试图检查这个c 值的准确性。
我做了n = 3 ** (int(n/x)) - 2 ** n,但很震惊n 是一个有 64165 位的十进制数!
之后,我做了一个随意的动作:n ** n
我等了这么久,答案没有出来。
经过一番思考,我感到很惊讶。我将这样一个数字乘以大约10**64165 次!
那我想知道在宇宙消失之前它会不会成功!
但是我的同事告诉我,CPU 不会愚蠢地试图将它乘以那么多时间。它会使用一些算法来缩短时间。
经过神奇的计算,他告诉我,如果我的电脑能在一秒钟内完成简单的计算10**8,百万年就可以计算出来。
这是真的吗?
【问题讨论】:
-
如果您的问题是计算
64165**64165需要多长时间,使用 python 2.7 的 PC 只需不到一秒。 -
您对
c的值是log(3)/log(2),顺便说一句。但我也不明白你的确切问题是什么。 -
你问的是
n**n(求幂)还是n*n(n乘以n)?如果是求幂,那么地球上所有的计算机放在一起就没有足够的内存来存储结果。 -
@BHATIRSHAD 更像
n ** n,其中n有64165 位小数,因此您的结果是结果中的小数位数。将其与 99 公斤有机硅或宇宙中的电子数量进行比较。