计算m到n之间所有素数的和(Python)

对于输入样例210,Python代码会输出所有该范围内素数的和,如17。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

计算m到n之间所有素数的和

计算m到n之间所有素数的和,其中 2 <= m <=n <=100

输入格式:

请在这里写输入格式。例如:输入两个正整数

输出格式:

请在这里描述输出格式。例如:输出两个正整数之间的素数和。

输入样例:

在这里给出一组输入。例如:

2 10

输出样例:

在这里给出相应的输出。例如:

17


解题思路

  1. 首先,我们需要编写一个函数来检查一个数是否是素数。
  2. 然后,我们将遍历给定范围 [m,n][m, n][m,n] 内的每个整数,检查是否为素数。
  3. 如果是素数,将其添加到一个累加和的变量中。
  4. 最后,输出累加和即为所有素数的和。

值得一提的是,判断一个数 nnn 是否是素数,只需要判断 nnn 是否能被 [2,n][2,\sqrt{n}][2,n] 之间的整数整除即可。

因为约数是成对出现的,而这对约数必须一个在 n\sqrt{n}n 之前,一个在 n\sqrt{n}n 之后。

n×n=n\sqrt{n}\times\sqrt{n}=nn×n=n ,若约数都在 n\sqrt{n}n 之前的话,乘积一定小于 nnn ,同理,若都在 n\sqrt{n}n 之后的话,乘积一定大于 nnn

所以,如果在 n\sqrt{n}n 之前都找不到约数的话,那么 n\sqrt{n}n 之后就不会有了。

这是一个常见的数学优化,可以提高素数检查的效率,减少不必要的循环次数。


Python代码实现

# 判断是否为素数的函数
def is_prime(num):
    # 小于2的数不是素数
    if num < 2 :
        return False
    # 判断n能否被2到n的平方根之间的数整除
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

# 输入m和n
m, n = map(int, input().split())

# 初始化素数和为0
prime_sum = 0

# 遍历从m到n的每个数,检查是否是素数并累加到素数和中
for number in range(m, n + 1):
    if is_prime(number):
        prime_sum += number

# 输出素数和
print(prime_sum)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值