如何计算前n个素数? [英] How to calculate first n prime numbers?
本文介绍了如何计算前n个素数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
is_prime
可用。假设变量n已与正整数相关联。写出计算前n个素数之和所需的语句。总和应与变量TOTAL相关联。
注意: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函数的答案,该函数应该适用于所有可能的输入,而不仅仅是正数。
推荐答案
您的任务如下。
假设函数的可用性为_Prime。假设变量n已与正整数相关联。写出计算前n个素数之和所需的语句。总和应与变量合计关联。
正如NVRAM在评论中正确地指出的(其他人似乎没有注意到),问题是"假设函数is_prime
的可用性"。
您不必编写该函数。您要做的是"编写计算前n个素数之和所需的语句"。
其伪代码如下:
primes_left = n
curr_num = 2
curr_sum = 0
while primes_left > 0:
if is_prime(curr_num):
curr_sum = curr_sum + curr_num
primes_left = primes_left - 1
curr_num = curr_num + 1
print "Sum of first " + n + " primes is " + curr_sum
我想您会发现,如果您只用您选择的语言实现伪代码,这将是您所要做的全部工作。
如果您正在寻找is_prime
的实现来测试您的赋值,那么它的效率有多高并不重要,因为无论如何您只需要测试几个小值。考虑到将使用它的代码的限制,您也不必担心小于2的数字。这样的事情是完全可以接受的:
def is_prime(num):
if num < 2:
return false
if num == 2:
return true
divisor = 2
while divisor * divisor <= num:
if num % divisor == 0:
return false
divisor = divisor + 1
return true
这篇关于如何计算前n个素数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文