[英]Strange results for the time that a program takes to run
這是我用Python編寫的程序:
import sys
from time import time
start = time()
x = input('How many primes? ')
if x < 1:
sys.exit("invalid input")
y = 3
primes = [2]
while len(primes) < x:
for i in primes:
if y % i == 0:
break
elif i > (y**(.5)):
primes.append(y)
break
y += 1
print primes
print time() - start
它運作良好,但我注意到一些奇怪的事情。 如果我要求1000個素數,該程序需要大約2.3秒才能找到答案,但如果我要求10000個素數,該程序大約需要1.8秒才能找到答案。 這沒有多大意義,因為程序必須做更多的計算才能找到10000個素數而不是1000個。有人可以解釋是什么導致這個嗎?
在解決了一個小問題(並刪除輸出以使事情更清潔)后,它對我有用:
~/coding$ python pcount.py
How many primes? 1000
0.0194370746613
~/coding$ python pcount.py
How many primes? 2000
0.0495121479034
~/coding$ python pcount.py
How many primes? 5000
0.172223091125
~/coding$ python pcount.py
How many primes? 10000
0.449481010437
問題是你的第一個
start = time()
在您要求用戶輸入之前出現 。 您沒有計算進行計算所需的時間,您需要計算輸入數字所需的時間。
您可能想在用戶輸入后示例您的開始時間:)
移動后,它在0.012秒內運行1000和0.365秒運行10000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.