cocowy的编程之旅
C语言编程实现
问题描述:求给定整数M到N区间内素数的个数并对他们求和。
-
输入格式
输入在一行中给出正整数M和N(1<=M<=N<=500) -
输出格式
在一行中顺序输出给定区间内素数的个数以及他们之和。
输入案例
1 | 10 |
---|---|
4 | 17 |
==算法思维解析==
1.首先要清楚一个思路,从M到N区间上应该要进行遍历,运用循环。
2.在循环嵌套里面巧妙的利用变量 prime,若正整数能被任意小于它的整数整除没有余数则跳出循环,用prime表示他不是素数,反之。
3.另一个值得注意的是prime=1的这个变量只能放在第一个循环里,不能放在循环外,因为在第二个循环里已经对prime进行赋值操作,所以在开启新的一轮循环时必须要对prime进行初始化操作。
代码段如下:
#include<stdio.h>
#include<math.h>
int main()
{
int M,N;
int i,j;
int sum,count=0;
scanf("%d %d",&M,&N);
if(M==1)
M=2;
for(i=M;i<=N;i++){
int prime=1;
for(j=2;j<i;j++){
if(i%j==0){
prime=0;
break;
}
}
if(prime) {
count++;
sum+=i;
}
}
printf("素数的个数为%d,和为%d\n",count,sum);
return 0;
}