2017-07-23 235 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