2012-03-02 89 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

相关问题