c语言求素数

C语言求1到100间所有素数,程序没有错,可是运行之后除了“1到100之间的所有素数是:”这行字之外啥也没有,怎么回事?

#include <stdio.h>

int prime(int);

main()
{
int x;
printf("1到100之间的所有素数是:\n");
x=1;
while(x<=100);
{
if(prime(x))
printf("%d ",x);
x=x+1;
}
}
int prime(int a)
{
int i;
for(i=2;i<=a/2;i++)
if(a%i==0)return 0;
return 1;
}

楼上说的不对,其实不是什么IF-ELSE语句的问题,本来就是应该for循环内运行if(a%i == 0) 语句的,return 1; 语句是在for 循环外的,表示没有找到a的约数时才return 1 ;也即表示a为素数。这里没什么问题的,

问题存在于你的while语法: 你写的while(x<=100); 注意你写的while后面有个分号,其实这就已经构成一个while循环了。循环内容就是“;”表示什么也不做,而循环条件是1<=100为真的,程序运行到这里就进入死循环。。。从而出现你所说的“程序没有错,可是运行之后除了‘1到100之间的所有素数是:’这行字之外啥也没有,”

只要删除while(x<=100);后面的分号就可以了,即
#include <stdio.h>

int prime(int);

main()
{
int x;
printf("1到100之间的所有素数是:\n");
x=1; //这里最好是从2开始的,否则会出现1也是素数的结果。或者
//你在int prime(int);函数中单独判断一下参数为1的特殊情
//形。
while(x<=100) //这里不要分号。但do-while语句后面是有分号的
{
if(prime(x))
printf("%d ",x);
x=x+1;
}
}
int prime(int a)
{
int i;
for(i=2;i<=a/2;i++)
if(a%i==0)
return 0;
return 1;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-06
if(a%i==0)return 0;
return 1;
这里应该要if-else搭配
改为
if(a%i==0)return 0;
else return 1;

还有,看了几次程序,总觉得
x=x+1;有问题,你都改改,不行的话我就没办法了
第2个回答  2020-02-19

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网