本题要求统计给定整数M和N区间内素数的个数并对它们求和。 输入格式: 输入在一行中给出两个正整数M和N(1≤M≤N≤500)。 输出格式: 在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔
时间: 2024-06-18 08:05:40 浏览: 171
题目要求统计给定整数M和N区间内素数的个数并对它们求和。
素数(也叫质数)是指除了1和本身以外没有其他因数的自然数。判断素数一般采用试除法,即从2开始,一直到这个数的平方根结束,逐个判断是否能整除。如果都不能整除,则这个数是素数。对于一个区间内的每个数,都要进行判断。
以下是代码实现的主要思路:
1. 定义一个函数isPrime(n)来判断一个数n是否是素数。
2. 对于区间[M, N]内的每个数i,都调用isPrime(i)函数来判断是否是素数。
3. 统计[M, N]内素数的个数cnt和素数的和sum。
4. 输出cnt和sum。
代码如下:
```
#include <stdio.h>
#include <math.h>
int isPrime(int n) // 判断素数函数
{
if (n <= 1) return 0; // 1不是素数
int sqr = (int)sqrt(n);
for (int i = 2; i <= sqr; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main()
{
int M, N;
scanf("%d%d", &M, &N);
int cnt = 0, sum = 0;
for (int i = M; i <= N; i++) {
if (isPrime(i)) {
cnt++;
sum += i;
}
}
printf("%d %d\n", cnt, sum);
return 0;
}
```
阅读全文