我想計算所有低於200萬的素數的總和,因爲我已經編寫了一個函數來查找小於給定數字的素數,所以我簡單地寫了一個新函數來調用舊函數,將該列表中的項目相加。如何讓Python更快地工作?
但它似乎是永遠。我怎樣才能加快這個代碼?
def find_primes(n):
"Find the prime numbers below n"
primes=[];
for i in range(2,n):
for fac in range (2,i):
if i!=fac and i%fac == 0:
break
else:
primes.append(i)
return primes
def add_primes(m):
"Sum all the prime numbers below m"
newlist=find_primes(m);
t=sum(newlist);
return t
PS:我是一個有關Python的新手,所以如果你能很好地解釋我的錯誤,我會很高興。提前致謝。
讓你的代碼更聰明地工作嗎? – 2013-03-24 13:58:22
順便說一下,條件'i!= fac'總是* true,因爲'range'不會產生「停止」參數,因此每個循環都進行無用的比較(儘管它應該相當快) 。 – Bakuriu 2013-03-24 14:06:41