c语言 统计输入两个数字之间素数个数并输出素数

#include<stdio.h>
int main()
{
int a,b,c,d,e=0;
scanf("%d,%d\n",&a,&b);
for(c=a;c<=b;c++)
{
for(d=2;d<=c;d++)
{
if(c%d==0&&d!=c)
{
break;
}
if(d==c)
{
e=e+1;
printf("%d ",c);
}
}
printf("两数间素数共有%d\n",e);
return 0;
}

请问下这个代码错在哪里了,运行的时候感觉中间的都没走,直接打印的是e=0的结果,头疼死了
#include<stdio.h>
int main()
{
int a,b,c,d,e=0;
scanf("%d,%d\n",&a,&b);
for(c=a;c<=b;c++)
{
for(d=2;d<=c;d++)
{
if(c%d==0&&d!=c)
{
break;
}
if(d==c)
{
e=e+1;
printf("%d ",c);
}
}
}
printf("两数间素数共有%d\n",e);
return 0;
}

例:

#include<stdio.h>

voidmain()

{

inti,j,a,b;

intc[100],count;

count=0;

do/*让输入的数a小于数b*/

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

while(a>b);

for(i=a;i<=b;i++)/*判断a.b之间的素数*/

{for(j=2;j<i;j++)

if(i%j==0)break;

if(i==j)c[count++]=i;/*如果是素数,最后i==j,把素数存入数组c,且count计数*/

}

for(i=0;i<count;i++)/*输出结果*/

{printf("%d",c[i]);

if((i+1)%5==0)printf("\n");

}

printf("素数的个数%d:",count);

}

扩展资料

C语言输出任意两个数之间的质数

#include<stdio.h>

staticintisPrime(intn);

voidmain()

{

intlow,high;

intflag=1;

while(flag==1)

{

printf("输出两个数(一空格分割):");

scanf("%d%d",&low,&high);

/*

//3.利用异或运算来交换数据

//利用的思想原理是:一个数异或同一个数两次,结果还是那个数,而且不会超出int范围

unsignedinta=60;//00111100

unsignedintb=13;//00001101

printf("交换之前:a=%d,b=%d\n",a,b);//输出a,b的值

a=a^b;//a=a^b=00110001

b=a^b;//b=a^b=00111100

a=a^b;//a=a^b=00001101

printf("交换之后:a=%d,b=%d\n",a,b);//输出a,b的值

*/

//如果low输入的值大了,交换,保证low的值小于high

if(low>high)

{

low=low^high;

high=low^high;

low=low^high;

}

inti;

staticintfirst=0;

intcount=0;

for(i=low;i<high;i++)

{

if(isPrime(i)==1)//如果i是质数

{

//输出逗号,第一个逗号屏蔽

if(first==1)

{

printf(",");

//每十个束素数一行

if(++count%10==0)

printf("\n");

}

elsefirst=1;

printf("%5d",i);//输出素数

}

}printf("。");

printf("\n继续[1/0]?:");

scanf("%d",&flag);

}

}

staticintisPrime(intn)//判断n是不是质数

{

if(n<=1)

return-1;

intISPrime=1;//默认是质数,用1表示

inti;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-13
第二个if语句少了一个括号。追问

之前把那个if删了,重新打的if手抖没上括号,但是上了括号也一样的啊
就是不报错。运行的时候直接输出e=0.给我的感觉就是从第一个for就直接忽略了

追答

你把第二个if(d==c)改成else试试。

追问

。。。else肯定不对吧、、、、前一个if是同时满足两个条件,第二个if吐过换成else意味着只要一个条件不满足都走else

追答

你是用的什么软件,下面这位用VS的老兄说能成功,我用VC.6.0和你情况一样。
既然能成功就说明你代码没问题。

追问

我也用的vs啊。。
绝对撞鬼了

第2个回答  推荐于2017-09-30
int main()
{
int a,b,c,d,e=0;
scanf("%d,%d",&a,&b);
for(c=a;c<=b;c++)
{
for(d=2;d<=c;d++)
{
if(c%d==0&&d!=c)
{
break;
}
if(d==c)
{
e=e+1;
printf("%d ",c);
}
}
}
printf("两数间素数共有%d\n",e);
return 0;
}
我试了没有错误,你再试一下。你输入的时候注意要用逗号好分开。追问

是啊,没报错,只是运行的时候打印的结果为0
怎么输入不同的值,打印结果都是0.给我的感觉就是中间那部分完全跳过了

追答

打印不是0,你再试一下,scanf不是这样读换行的,你再试下!

追问

纳尼。。。。

追答

你可能建错了,重新建个工程,c++的也能编译。

追问

重建还是不行。。。。。。。
撞鬼了?

追答

你那个逗号是中文逗号,换英文的的再试!

本回答被提问者和网友采纳