2012-03-02 71 views
0

這裏的時候奇怪的結果是,我在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更多的10000個素數。任何人都可以解釋導致這種情況的原因嗎?

+0

看來,你輸入5位數比4快:) – 2012-03-02 23:53:49

回答

1

固定一個小問題(並刪除輸出使事情變得更清潔),它爲我工作後:

~/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() 

系標配你問前供用戶輸入。你沒有時間需要多久做計算,你定時需要多長時間你輸入數字..

1

您可能希望用戶輸入:)

後品嚐你的啓動時間移動它後,它運行在0.012秒1000和0.365秒10000

相關問題