我写这个函数来检查一个数是否是素数。它本身似乎工作得很好,但是当我在另一个函数中使用它时,它似乎不起作用。在
这是我的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
以下函数计算2000000以下所有素数之和:
^{pr2}$
我不明白我哪里做错了。在
如有意见,将不胜感激。在
Tags:
is_prime
没有检查偶数。例如,如果传递给它4,它会发现它既不是2也不是3,然后继续循环,它将执行一次,检查它是否可以被3整除(它不是)。退出循环,它将返回True
,当我们知道4实际上不是质数时。在您的
problem10
函数流中有一个错误。归根结底,您并没有实际使用递归problem10
函数的结果值。您希望您的代码看起来像这样(假设您希望保留递归,则可以考虑使用循环):请注意,这种函数方法有几个关键点需要考虑:
与您最初的尝试相比:请注意在return语句中使用表达式大大简化了函数的逻辑(流)。它的可读性确实要高得多。另外,请注意,原来的函数是如何无法工作的,因为:
a.您的函数不更新运行总数(结果)
即使有,最终你还是会把
None
加到某个东西上,因为你原来的函数在prime>;=2000000的情况下没有返回任何结果。更快的素数列表是这样的:
那么就是这些的总和:
^{pr2}$如果要使用函数,建议重写:
^{3}$相关问题 更多 >
编程相关推荐