入门级C语言题,输入两个正整数a和b(a<b),输出在[a,b]区间内的所有素数的个数。

答案总是不正确,到底是哪里有问题啊?#include<windows.h>#include<stdio.h>intmain(){inta,b,c=0,d,e=0;scan... 答案总是不正确,到底是哪里有问题啊?

#include<windows.h>
#include<stdio.h>
int main()
{
int a,b,c=0,d,e=0;

scanf("%d%d",&a,&b);

for(int i=a;i<=b;i++){
for(d=2;d<=i-1;d++){
if(i%d){
e++;

}
if(!(e-i+2)){
c++;
}

}

}
printf("%d\n",c);
system("pause");
}
展开
 我来答
clitoriscn
2011-11-14 · TA获得超过3628个赞
知道小有建树答主
回答量:3258
采纳率:0%
帮助的人:1529万
展开全部
scanf("%d%d",&a,&b);/*这里能不能加个空格或者逗号?否则计算机怎么知道你从哪里分割?*/

if(!(e-i+2)) /*这里是什么意思,说实话没想明白*/
追问
有必要加空格么,该有的逗号都已经有了啊

那个就是if(e==i-2)啊,e,是一个计数器,也就是说当i分别除以从2到i-1这i-2个数若都除不尽的话那么素数计数器c就加一
追答
我知道怎么原因了.
因为你每判断一个数的时候,计数器e没有清0
算法没什么问题,只要把e=0加到
for(int i=a;i<=b;i++){
后面就可以了
Trinco
2011-11-14 · TA获得超过142个赞
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:154万
展开全部
#include<windows.h>
#include<stdio.h>
int main()
{
int a,b,c=0,d,e=0;

scanf("%d%d",&a,&b);

for(int i=a;i<=b;i++){
if(i==2)
{
c++;
}
else
{
for(d=2;d<=i-1;d++)
{
if(i%d==0)
break;
}
if(d==i)
c++;
}

}
printf("%d\n",c);
system("pause");
return 0;
}
追问
这个算法是改的比我原来的好的多,我只是想问问原来的那种算法哪里错了?
追答
那你得先说说你原来算法的意图是什么,完全就没明白你的那个算法的意图啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
堵静逸kd
2011-11-14
知道答主
回答量:13
采纳率:0%
帮助的人:9.4万
展开全部
#include<windows.h>
#include<stdio.h>
int main()
{
int a,b,c=0,d,e=0;
scanf("%d%d",&a,&b);
for(int i=a;i<=b;i++){
for(d=2;d<=i-1;d++){
if (i%d) break;
if (i==d) c++;
}
}
printf("%d\n",c);
system("pause");
}
追问
这个算法是改的比我原来的好的多,我只是想问问原来的那种算法哪里错了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
frost0205
2011-11-14 · 超过62用户采纳过TA的回答
知道小有建树答主
回答量:322
采纳率:0%
帮助的人:182万
展开全部
你这个算法是怎么来的?明摆着算法的问题
追问
我就是想问问算法有什么问题
追答
这个算法怎么来的,完全不知道在做什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式