首页 > 编程知识 正文

使用Python找质数个数并求和

时间:2023-11-20 18:47:04 阅读:296765 作者:FAFB

本文将介绍如何使用Python编程语言找到一定范围内的质数个数,并计算这些质数的和。

一、质数的定义与筛选方法

1. 质数的定义:质数又称素数,是指大于1的自然数中,除了1和自身外没有其他因数的数。

2. 筛选方法:可以使用试除法或者埃拉托斯特尼筛法来判断一个数是否为质数。

二、寻找质数的算法

1. 试除法:遍历2到n-1的每个数i,判断n是否能被i整除,若能,则n不为质数。

def is_prime(n):
    if n < 2:  # 小于2的数不是质数
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

2. 埃拉托斯特尼筛法:从2开始,将每个质数的倍数标记为合数,直到遇到一个未被标记的数,即为质数。

def prime_sieve(n):
    sieve = [True] * (n + 1)
    sieve[0] = sieve[1] = False
    p = 2
    while p * p <= n:
        if sieve[p]:
            for i in range(p * p, n + 1, p):
                sieve[i] = False
        p += 1
    primes = [i for i in range(n + 1) if sieve[i]]
    return primes

三、找质数个数并求和

1. 使用试除法:

def count_primes_and_sum_trial(n):
    count = 0
    prime_sum = 0
    for i in range(2, n + 1):
        if is_prime(i):
            count += 1
            prime_sum += i
    return count, prime_sum

2. 使用埃拉托斯特尼筛法:

def count_primes_and_sum_sieve(n):
    primes = prime_sieve(n)
    count = len(primes)
    prime_sum = sum(primes)
    return count, prime_sum

四、示例及结果

我们以范围为1到100的质数个数和求和为例来进行示范:

n = 100
count1, sum1 = count_primes_and_sum_trial(n)
count2, sum2 = count_primes_and_sum_sieve(n)
print(f"使用试除法:范围内共有 {count1} 个质数,求和结果为 {sum1}")
print(f"使用埃拉托斯特尼筛法:范围内共有 {count2} 个质数,求和结果为 {sum2}")

运行结果:

使用试除法:范围内共有 25 个质数,求和结果为 1060
使用埃拉托斯特尼筛法:范围内共有 25 个质数,求和结果为 1060

五、总结

本文介绍了使用Python编程语言找质数个数并求和的方法,提供了试除法和埃拉托斯特尼筛法两种算法,并给出了使用范围为1到100的例子进行演示。通过运行代码,我们可以得到1到100的质数个数和求和的结果。

通过本文的介绍,我们可以更好地理解质数的定义以及找质数的算法,并能够应用这些算法解决实际问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。