用python输入两个正整数M和N(M<=N),输出[M, N]区间内素数的个数及这些素数的和。
时间: 2024-09-08 22:04:00 浏览: 81
在Python中,你可以使用Sieve of Eratosthenes算法来找出给定区间内的所有素数。这个算法是一种高效的找到一组范围内所有质数的经典方法。以下是实现该功能的一个简单步骤:
首先,创建一个布尔列表`is_prime`,初始值全部设为True,表示所有数字都是潜在的质数。然后从2开始,将`is_prime`中每个数的倍数都标记为非质数。
接着,遍历`is_prime`列表,对于未被标记为False的位置(即当前数字),它就是区间内的一个素数。计数器增加,并累加到总和中。
最后,输出素数的数量和它们的和。
下面是一个示例代码片段:
```python
def prime_count_and_sum(M, N):
def sieve_of_eratosthenes(n):
primes = [True] * (n+1)
p = 2
while p**2 <= n:
if primes[p]:
for i in range(p**2, n+1, p):
primes[i] = False
p += 1
return primes
is_prime = sieve_of_eratosthenes(N)
count = sum(1 for i in range(M, N+1) if is_prime[i])
total_sum = sum(i for i in range(M, N+1) if is_prime[i])
return count, total_sum
# 示例
M = int(input("请输入第一个正整数 M: "))
N = int(input("请输入第二个正整数 N: "))
count, sum_primes = prime_count_and_sum(M, N)
print(f"区间 [{M}, {N}] 内的素数有 {count} 个,它们的和是 {sum_primes}。")
```
阅读全文