我们先来看一下题目的条件:
要求的是统计给定区间中的素数的个数并对它们求和。
输入格式:输入在一行中给出的2个正整数M和N(1<=M<=N<=500)
输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
我们具体看一下代码:
具体的各段的解释都在注释里面存在:
#include<stdio.h>
int main()
{
int m, n;
int i;
int cnt = 0;
int sum = 0;
scanf_s("%d %d", &m, &n);//输入两个整数,所为上限和下限
//注意的是,如果我们把m输入为1时,那么在下面第二个循环就不会进去,然后就会产生错误,把1看成素数的样子。
if (m == 1)
{
m = 2;//所以我们直接把输入的以1当成输入的2来看。
}
for (i = m; i <= n; i++)//进行两个整数之间的每一个数的遍历。
{
int isPrime = 1;
int k;
for (k = 2; k < i - 1; k++)
{
if (i % k == 0)//还是用之前求素数的方法,每一个得到的数都用2及其以上的数进行整除。
{
isPrime = 0;//如果能整除的话就变量标记和退出循环
break;
}
}
if (isPrime)
{
cnt++;
sum += i;
}
}
printf("%d %d\n", cnt, sum);
return 0;
}