用64165位小数计算n**n`(n乘以n)需要多长时间?

2024-04-26 12:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

假设此计算是在正常的I7cpu上进行的。你知道吗

这个n的一部分看起来像:062818261573550755996975051396213990265395588957460690342970606032106870077208096704804861337086094604502447252509279335757453605836337900088980571550652843637152844978598425585659705979638641046274358312112553872770884438397651131234023085240167008580828612926148647820470126736393237752952205498922435592164336944705

事情是这样的。你知道吗

今天下午我突然想到一个猜测。我想知道是否存在一个常量值c,它使2**x == 3**(x/c)

我算出了一个近似值:c = 1.5849116411760045

我做了一个任意的x = 213145试图检查这个c值有多精确。你知道吗

我做了n = 3 ** (int(n/x)) - 2 ** nn是一个有64165位数字的十进制数!你知道吗

之后,我做了一个随意的动作:n ** n

我等了这么久,结果没有答案。你知道吗

经过一番思考,我很惊讶。我将这样一个数字乘以大约10**64165倍!你知道吗

那我在想,在宇宙消失之前,它是不是行不通!你知道吗

但我的同事告诉我,CPU不会愚蠢地把它乘以那么多时间。它将使用一些算法来缩短时间。你知道吗

经过一次神奇的计算后,他告诉我,如果我的电脑能每秒做简单的计算10**8,百万年后它就能计算出来。你知道吗

是真的吗?你知道吗


Tags: 答案算法时间数字宇宙cpu事情int
2条回答

I was wondering if there exists a constant value c which makes 2**x == 3**(x/c)

对于正x,如果

2**x == 3**(x/c)

那么

log(2**x) == log(3**(x/c))

x * log(2) = (x/c) * log(3)

所以呢

c = log(3)/log(2) ~ 1.5849625...

问题是,结果将是一个非常大的整数,因此不仅是长的pow操作,而且是结果的分配,而且都是耗时耗CPU的操作。你知道吗

相关问题 更多 >