我寫了這個函數來檢查一個數是否爲素數。它似乎工作正常,但是當我在另一個函數中使用它時,它似乎不工作。IsPrime函數錯誤?
這裏是我的IsPrime功能:
def is_prime(n):
boolean = False
if n == 2 or n == 3:
return True
for x in range(3, int(n**0.5)+1, 2):
if n % x == 0:
return False
return True
了以下功能計算200萬下的所有質數的和:
def problem10(prime, result):
if prime > 2000000:
return
if is_prime(prime):
print 'prime is ', prime
result = result + prime
problem10(prime + 1, result)
return result
我能不明白的地方我已經錯了。
評論將不勝感激。
當數字不是素數時會發生什麼? – ovgolovin
請澄清你的意思是「似乎不起作用」。 – jpm
另外,你爲什麼遞歸調用problem10與下一個有問題的數字? for循環必須更加高效,並且不會導致堆棧溢出 – Serge