2017-07-23 191 views
1

我在做一个关于除数的简单代码,我想对计算机给我一个答案需要多长时间的反馈。时间需要多长时间

这里是我的代码:

num=int(input('Give me a number')) 
listRange=list(range(1,num+1)) 
divisorList=[] 
for number in listRange: 
    if num%number==0: 
     divisorList.append(number) 
print(divisorList) 

正如你所看到的,数字越大,更多的时间,电脑需要处理所有的除数,所以我想知道它花多少时间,而这样做。

+3

*为O(n)*与* N *输入的值。但你可以做得更好:* O(sqrt n)*。 –

+2

看看[timeit.py](https://docs.python.org/3/library/timeit.html)或时间模块。 –

+1

您可以对数字进行素数分解,然后生成所有因素的组合。 –

回答

1

您可以使用之后的时间模块循环之前的时间戳和另一个和打印的区别。

import time 

num=int(input('Give me a number')) 
listRange=list(range(1,num+1)) 
divisorList=[] 
start = time.time() # use time.clock() if on Windows 
for number in listRange: 
     if num%number==0: 
      divisorList.append(number) 
end = time.time() # use time.clock() if on Windows 
print(divisorList) 
print("Time taken: {:06.5f}secs".format(end-start)) # Seconds 
print("Time taken: {:10.5f}ms".format((end-start)*1000) # Miliseconds 
0

如果您要查找的时间(秒):

from time import time 
start = time() 
... # code 
print(time() - start) 
+0

如果我正在寻找以毫秒(ms)为单位的时间呢? – LFSS

+2

@LFSS'time.time()'返回一个'float',所以简单地把答案乘以1000 –

0

您可以使用timeit模块:

import timeit 

num=100000 
listRange=list(range(1,num+1)) 

def function(): 
    divisorList=[] 
    for number in listRange: 
     if num%number==0: 
      divisorList.append(number) 

print(timeit.timeit(function, number=1)) 
# 0.01269146570884061