输入2个正整数 m 和 n(1<=m,n<=500),统计并输出 m 到 n 之间的素数的个数以及这些素数的和。素数就

这是我做的,请问错在了哪里?#include<stdio.h>#include<math.h>intmain(void){intcount,i,m,n,sum;intre... 这是我做的,请问 错在了哪里?
#include <stdio.h>
#include<math.h>
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int );

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
sum=0;
count=0;
for(i=m;i<=n;i++)
if(prime(i)!=0)
{sum=sum+i;
count++;}

printf("Count = %d, sum = %d\n", count, sum);
}
}
int prime(int i)
{int j;
if(i==1)
return 0;
for(j=2;j<=i;j++)
{if(i%j==0)
{return 0;}}
return 1;}
展开
 我来答
xoalyg
2012-04-04 · TA获得超过4178个赞
知道大有可为答主
回答量:2356
采纳率:100%
帮助的人:2382万
展开全部
/*
请输入计算次数 : 2
请输入数值范围 1 -- 500(逗号隔开) :200,300
Count = 16, sum = 4048
请输入数值范围 1 -- 500(逗号隔开) :100,200
Count = 21, sum = 3167
Press any key to continue
*/
#include <stdio.h>
#include <math.h>

int prime(int n) {
int i;
if(n == 1) return 0;
for(i = 2;i * i <= n;i++) {
if(n%i == 0) return 0;
}
return 1;
}

int main(void) {
int count, i, m, n, sum;
int repeat, ri;
printf("请输入计算次数 : ");
scanf("%d", &repeat);
for(ri = 0; ri < repeat; ri++) {
printf("请输入数值范围 1 -- 500(逗号隔开) :");
scanf("%d,%d",&m,&n);
sum = 0;
count = 0;
for(i = m;i <= n;i++) {
if(prime(i) != 0) {
sum = sum + i;
count++;
}
}
printf("Count = %d, sum = %d\n", count, sum);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c2a621b0f
2012-04-04 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:93.5万
展开全部
int prime(int i)
{int j;
if(i==1)
return 0;
for(j=2;j<=i;j++)
{if(i%j==0)
{return 0;}}
return 1;}

因为对于任何数i,i%i总是等于0的。循环的终止条件应该是j<i或者j*j<=i。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Goldenstar1
2012-04-04 · TA获得超过696个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:348万
展开全部
#include <stdio.h>
#include<math.h>
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int i);

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d,%d", &m, &n);
sum=0;
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 i)
{int j;
if(i==1) return 0;
for(j=2;j<i;j++)
{if(i%j==0) return 0;}
return 1;}
这是我改的源代码,虽然晚了一点。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
用电知识分享
2012-04-04 · TA获得超过1831个赞
知道小有建树答主
回答量:841
采纳率:69%
帮助的人:267万
展开全部
函数int prime(int i)
{int j;
if(i==1)
return 0;
for(j=2;j<=i;j++)
{if(i%j==0)
{return 0;}}
return 1;}
写错了; j<i
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式