如何计算前n个素数? [英] How to calculate first n prime numbers?

查看:20
本文介绍了如何计算前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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆