【发布时间】:2010-12-19 09:01:28
【问题描述】:
假设函数is_prime 可用。假设变量 n 与一个正整数相关联。写出计算前 n 个素数之和所需的语句。总和应与变量总计相关联。
注意:is_prime 将整数作为参数,当且仅当该整数是素数时才返回 True。
好吧,我写了is_prime这样的函数:
def is_prime(n):
n = abs(n)
i = 2
while i < n:
if n % i == 0:
return False
i += 1
return True
但是除了 n==0 之外它都有效。如何修复它以使其适用于每个整数? 我正在尝试找出如何编写函数来获取前 n 个素数之和以及如何修改我的 is_prime 函数的答案,该函数应该适用于所有可能的输入,而不仅仅是正数。
【问题讨论】:
-
您应该只测试奇数(将 i 增加 2),将您的算法加速 2 倍...
-
@DevSolar:“不偶数”是“奇数”的奇数术语。代码必须检查 2,然后继续检查奇数;它也可以在 N 的平方根处停止,以实现另一个巨大的(大于 2 倍)加速。事实上,在检查 2 和 3 之后,您可以检查 6±1 的倍数(5、7、11、13 等)以获得更大的加速。
-
第一段要求计算前 n 个素数之和的代码。它说“假设函数
is_prime的可用性” 不要编写它。听起来你没有仔细阅读——或者你只是想弄清楚你需要如何写is_prime?
标签: primes