按照你的要求编写的C语言程序如下
#include<stdio.h>
int f(int x) //定义判断素数的函数
{
int n,flag=1;
if(x==1) return 0;
for(n=2;n<x;n++)
if(x%n==0)
flag=0;
return flag;
}
int main()
{
int i,N,M,count=0,sum=0;
scanf("%d%d",&N,&M);
for(i=N;i<=M;i++){
if(f(i)==1){
count++;
sum=sum+i;
}
}
printf("%d到%d之间共有%d个素数,它们的和为%d",N,M,count,sum);
return 0;
}
追问可以写一下你定义的变量代表什么吗
追答对变量的意思加解释的程序如下(每个变量的解释见注释)
#include
int f(int x) //定义判断素数的函数
{
int n,flag=1;//flag表示返回值,x表示传入的要判断的数,n表示循环变量
if(x==1) return 0;
for(n=2;n<x;n++)
if(x%n==0)
flag=0;
return flag;
}
int main()
{
int i,N,M,count=0,sum=0;//N,M表示范围其中N<M,i表示循环变量,count表示素数个数,sum表示素数和
scanf("%d%d",&N,&M);
for(i=N;i<=M;i++){
if(f(i)==1){
count++;
sum=sum+i;
}
}
printf("%d到%d之间共有%d个素数,它们的和为%d",N,M,count,sum);
return 0;
}
你写的代码不是我学习过的,很复杂啊,
追答哈哈,只是可能看起来比较复杂,很好理解的,就是从2开始,将这个数到范围上限的倍数全部排除掉,再找下一个没被排除的数,重复这个过程,直到范围上限。这个算法也就是,筛法求素数,以空间换时间,是最高效的求素数算法
本回答被提问者采纳