本题要求统计给定整数 M 和 N 区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数 M 和 N(1 ≤ M ≤ N ≤ 500)。
输出格式:
在一行中顺序输出 M 和 N 区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/12/exam/problems/286
提交:
题解:
#include <stdio.h>
#include <math.h>
/*
* 判断 x 是否是素数:[1]是 [0]不是
*/
int isPrime(int x) {
int flag = 1;
// 小于 2 的数一定不是素数
if (x < 2) {
flag = 0;
}
// 能被 2~sqrt(x) 间任一数整除的数一定不是素数
for (int i = 2; i <= sqrt(x); i++) {
if (x % i == 0) {
flag = 0;
break;
}
}
return flag;
}
int main() {
int M, N;
scanf("%d%d", &M, &N);
int count = 0, sum = 0;
for (; M <= N; M++) {
if (isPrime(M) == 1) {
sum += M;
count++;
}
}
printf("%d %d\n", count, sum);
return 0;
}