我写了这个函数来检查一个数字是否为素数.它本身似乎工作正常但是当我在另一个函数中使用它时,它似乎不起作用.
这是我的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
Run Code Online (Sandbox Code Playgroud)
下面的函数计算2000000以下所有素数的总和:
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
Run Code Online (Sandbox Code Playgroud)
我无法理解我哪里出错了.
评论将不胜感激.
is_prime不检查偶数.例如,如果你传递它4,它会看到它既不是2也不是3,然后进入循环,它将执行一次,检查它是否可被3整除(它不是).退出循环时,它会返回True,当我们知道4实际上不是素数时.