本题要求统计给定整数M和N区间内素数的个数并对它们求和。 输入格式: 输入在一行中给出两个正整数M和N(1 ≤ M ≤ N≤500)。 輸出格式: 在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。 输入样例: 10 31 输出样例: 7 143 用C语言编写
时间: 2024-10-19 13:05:49 浏览: 147
在C语言中,你可以通过以下步骤来解决这个问题:
1. 定义一个函数`is_prime(int n)`,用于检查一个数是否是素数。这个函数通常会遍历从2到n的平方根,如果找到能整除n的因子,则n不是素数。
```c
#include <stdbool.h>
bool is_prime(int n) {
if (n <= 1)
return false;
for (int i = 2; i * i <= n; i++)
if (n % i == 0)
return false;
return n > 1;
}
```
2. 写一个主函数`main()`,接受输入的M和N,然后遍历这两个范围内的所有数,统计素数的数量并将素数相加。
```c
int main() {
int M, N;
scanf("%d %d", &M, &N);
int prime_count = 0;
long long sum = 0;
for (int i = M; i <= N; i++) {
if (is_prime(i)) {
prime_count++;
sum += i;
}
}
printf("%d %lld\n", prime_count, sum);
return 0;
}
```
注意:此程序假设输入值M和N都小于或等于500,并且按照题目要求输出结果。如果你需要处理更大的数值范围,可能需要优化`is_prime`函数的效率,例如只检查到√n即可。
阅读全文