簡體   English   中英

程序運行時間的奇怪結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM