前言
PTA上有个函数题与其类似,然后它既然归为编程题,我就尽量不用函数做,文末会贴一下别人做的。
正文
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式: 输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例: 10 31
输出样例: 7 143
代码(正确)
#include <stdio.h>
int main()
{
int m,n,s;
int sum=0;
int i,count=0,flag=0;
scanf("%d%d",&m,&n);
s=m;//m的副本
while(s<=n){
for(i=2;i<s;i++){
if(s%i==0){
flag=1;
break;//一旦可除,跳出循环。
}
}
if(flag==1)
flag=0;
else if(flag==0){
sum=sum+s;//素数和
count++;//素数个数增加
}
s++;
}
if(m==1){
printf("%d %d",count-1,sum-1);//2是素数
}
else{
printf("%d %d",count,sum);
}
return 0;
}
注意:这里说明一下,break不能调if语句,break跳的应该是for循环。
这个文章有说明,检查素数只要看取余到它的根号就行。https://blog.csdn.net/YelloJesse/article/details/82682080