假设循环的速度是线性的(我的老师告诉我假设它,我知道这不是真的,但我们是初学者,所以我被要求计算运行此代码的平均计算机大约需要多长时间。. ):
num = 2**100
cnt = 0
import time
t0 = time.clock()
for i in range(num):
cnt = cnt+1
t1 = time.clock()
print("running time: ", t1-t0, " sec")
我等了 3 个小时并没有得到任何东西,所以,正如人们建议我做的那样,我计算了一个较小的输入:2**20
. 这花了 0.24478681215692052 秒。
现在,我尝试以两种我认为必须得到相同结果的方式继续计算,但事实并非如此。
如果我假设循环的速度是线性的,计算
2**100
我只需要计算(0.24478681215692052)^5
,因为(2**20)**5 = 2**100
。我得到的结果是:0.000878901251447358 秒(这真的不合逻辑)
我尝试了另一种方式:
2**20
- 0.24478681215692052 秒2**100
- ?
并像这样相乘:
2**100 * 0.24478681215692052 / 2**20
并得到: 296101054897497890198453.29788130608283648 秒通过使用这个计算器大数字。
我怎么可能得到2个不同的答案?而且看起来都不合逻辑?