用Python语言输入两个正整数M和N(M<=N),输出[M, N]区间内素数的个数及这些素数的和。
时间: 2024-09-16 10:02:57 浏览: 79
在Python中,我们可以使用Sieve of Eratosthenes算法来找出给定范围内的所有素数。这个算法是一种简单而有效的找到一组连续整数中所有质数的方法。下面是实现该功能的代码:
```python
def count_and_sum_primes(M, N):
# 创建一个布尔列表,初始值为True表示每个数字都是潜在的素数
is_prime = [True] * (N + 1)
# 素数从2开始,将它的倍数标记为非素数
for num in range(2, int(N**0.5) + 1):
if is_prime[num]:
for multiple in range(num*num, N+1, num):
is_prime[multiple] = False
# 初始化计数器和总和
prime_count = 0
prime_sum = 0
# 遍历[M, N],如果数字是素数,则增加计数和累加求和
for i in range(M, N+1):
if is_prime[i]:
prime_count += 1
prime_sum += i
return prime_count, prime_sum
# 用户输入
M = int(input("请输入起始整数M: "))
N = int(input("请输入结束整数N: "))
# 计算并输出结果
count, sum_of_primes = count_and_sum_primes(M, N)
print(f"区间 [{M}, {N}] 内的素数个数为: {count}")
print(f"这些素数的和为: {sum_of_primes}")
阅读全文