赞
踩
我们先来看一下题目的条件:
要求的是统计给定区间中的素数的个数并对它们求和。
输入格式:输入在一行中给出的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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。