本题要求显示给定整数M和N区间内素数并对它们求和。 输入格式: 在一行输入两个正整数M和N(1≤M≤N≤1000)。 输出格式: 显示指定范围的素数,素数间空一格,每五个换一行。 单独一行输出素数的个数及素数的和。
时间: 2024-11-09 12:25:33 浏览: 12
C语言程序设计经典题目及答案
题目描述的是一个程序任务,需要编写一个算法来解决以下问题:
1. 输入部分:从用户那里接收两个正整数M和N,这两个数字用于确定查找素数的区间范围。这个范围是闭合的,即包括M和N本身,且限制为1到1000之间。
2. 素数检查:对于区间内的每个整数i (从M到N),判断它是否是素数。素数是指大于1的自然数,除了1和其自身以外不再有其他因数。
3. 输出格式:找到的素数应该按照题目给出的样式输出,即每个素数之间隔一个空格,每五个素数换一行。最后输出两个值:素数的总数以及所有素数之和。
要完成这个任务,可以采用经典的“筛法”(如埃拉托斯特尼筛法)来找出所有的素数,并计算它们的总和。下面是简化的伪代码示例:
```python
def sieve_of_eratosthenes(n):
primes = [True] * (n+1)
primes[0], primes[1] = False, False
for i in range(2, int(n**0.5)+1):
if primes[i]:
for j in range(i*i, n+1, i):
primes[j] = False
return primes
def find_primes_in_range(m, n):
primes = sieve_of_eratosthenes(n)
result = []
total_sum = 0
count = 0
for i in range(m, n+1):
if primes[i]:
result.append(i)
total_sum += i
count += 1
if count % 5 == 0:
print(' '.join(map(str, result)))
result = []
print(f"素数的个数: {count}")
print(f"素数的和: {total_sum}")
# 读取用户输入并调用函数
m, n = map(int, input().split())
find_primes_in_range(m, n)
```
阅读全文