7-6 统计素数并求和 (10分)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
为了以后的方便,本题采用自定义函数的形式,判断一个数是否为素数
#include <stdio.h>
#include<math.h>
int sushu(int s);
int main()
{
int a,b,i;
int s1=0,s2=0;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++){
if(sushu(i)==1){
s1=s1+1;
s2=s2+i;
}
}
printf("%d %d",s1,s2);
return 0;
}
int sushu(int s){
int f=1;
if(s<2){
return 0;
}
else{
for(int i=2;i<=sqrt(s);i++){//i<s/2也可以,但是会增加循环次数,择优采用
if(s%i==0){
f=0;
}
}
if(f==1){
return 1;
}
else{
return 0;
}
}
}
注意点:
①1要单独判断,因为1因子只有它本身,所以质数从2开始
②条件i<=sqrt(s),别忘了等于号!!!