题目要求:
嵌套循环法:
#include<stdio.h>
int main()
{
int M,N;
int i,n;
int digit=0,sum=0,check=1; //当check ==1时n是 素数;n==0时n时不是素数
scanf("%d %d",&M,&N);
for(n=M;n<=N;n++){
check=1; //重置素数标识
for(i=2;i<n;i++){
if(n%i==0){
check=0;
break;}}
if(check==1&&n!=1){ //1既不是素数也不是合数
digit++;
sum=sum+n;}}
printf("digit=%d,sum=%d",digit,sum);
return 0;
}
函数法:
#include<stdio.h>
#include<math.h>
int prime(int x) //建立判断一个数是否为素数的函数,若是,输出check==1,否则,输出check==0
{ //,否则,输出check=0
int check=1;
if(x==1)
check=0;
else
{
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)
check=0;
}
}
return check;
}
int main() //运用循环依次判断区间内的数是否为素数,若是count++,sum+=i
{
int M,N;
int count=0,sum=0;
scanf("%d %d",&M,&N);
for(int i=M;i<=N;i++)
{
if(prime(i)==1)
{
count++;
sum+=i;
}
}
printf("%d %d",count,sum);
}