C语言 素数求和问题
答案:2 悬赏:50 手机版
解决时间 2021-11-22 06:25
- 提问者网友:绫月
- 2021-11-21 12:58
C语言 素数求和问题
最佳答案
- 五星知识达人网友:夜余生
- 2021-11-21 13:26
#include "stdio.h"
#include "math.h"
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int m);
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d %d", &m, &n);
sum = count = 0;
for(i=m;i<=n;i++){
if(prime(i)==1){
sum=sum+i;
count++;}
}
printf("Count=%d,sum=%d\n",count,sum);
}
}
int prime(int m)
{
int i;
if(m==2)return 1;
if(m==1)return 0;
if(m>2){
for(i=2;i if(m%i==0)
return 0;}
return 1;//你的主要问题在这里,上面的for循环已经限定了i不会大于m的,你再用了一个if(i>=m)就不对了
}
}追问因为要判断素数,如果从2到m-1,m%i都不为0,那最后i++,i的值就变成m,由此判断m为素数。老师就是这么用的啊追答这样也可以,你的老师是对的,但你写错了,如果要这样的话if(i>=m)return 1;应该写在for循环外面,不然当i=m的时候for循环已经结束了,也就判断不了了
#include "math.h"
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int m);
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d %d", &m, &n);
sum = count = 0;
for(i=m;i<=n;i++){
if(prime(i)==1){
sum=sum+i;
count++;}
}
printf("Count=%d,sum=%d\n",count,sum);
}
}
int prime(int m)
{
int i;
if(m==2)return 1;
if(m==1)return 0;
if(m>2){
for(i=2;i
return 0;}
return 1;//你的主要问题在这里,上面的for循环已经限定了i不会大于m的,你再用了一个if(i>=m)就不对了
}
}追问因为要判断素数,如果从2到m-1,m%i都不为0,那最后i++,i的值就变成m,由此判断m为素数。老师就是这么用的啊追答这样也可以,你的老师是对的,但你写错了,如果要这样的话if(i>=m)return 1;应该写在for循环外面,不然当i=m的时候for循环已经结束了,也就判断不了了
全部回答
- 1楼网友:青尢
- 2021-11-21 14:22
我给你个代码,你自己参考一下
#include "stdio.h"
void main()
{
int i=0,j=0,k=0,l=0,m=0,n=0;
printf("m~n之间的素数:");
scanf("%d,%d",&m,&n);
for(j=m;j<=n;j++)
{
for(i=2;i<=j;i++)
{
if(j%i==0)
break;
}
if(i==j)
{k++;
l+=j;}
}
printf("有%d个素数\n",k);
printf("这些素数的和为:%d",l);
}
#include "stdio.h"
void main()
{
int i=0,j=0,k=0,l=0,m=0,n=0;
printf("m~n之间的素数:");
scanf("%d,%d",&m,&n);
for(j=m;j<=n;j++)
{
for(i=2;i<=j;i++)
{
if(j%i==0)
break;
}
if(i==j)
{k++;
l+=j;}
}
printf("有%d个素数\n",k);
printf("这些素数的和为:%d",l);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯