数学之家

标题: C语言,检验素数程序,错在哪里? [打印本页]

作者: EMP震荡波    时间: 2010-8-15 11:51
标题: C语言,检验素数程序,错在哪里?
本帖最后由 EMP震荡波 于 2010-8-15 11:55 编辑

#include<stdio.h>
#include<math.h>
void main()
{

int p=2,n,i;

while(p>=2)

{

scanf("%d",&n);

while(p<=sqrt(n))

{

if(n%p==0)

{

i=0;

p=n;

}

else

{

i=1;

p=p+1;

}

}

if(i=0)

printf("不是素数\n");

else

printf("是素数\n");

p=2;

}
}
为什么无论输入什么数,结果都是“是素数”?该怎么修改?

2.5.png (8.54 KB, 下载次数: 132)

2.5.png

作者: 战巡    时间: 2010-8-15 12:37
这个很简单..........
第22行那里,if(i=0),改成if(i==0)

顺便提一下,你这个程序会把1当作质数...
另外貌似也没有自动纠错程序,万一我输入的不是正整数,而是0、负数、小数甚至字符,它都会出问题
作者: EMP震荡波    时间: 2010-8-15 16:04
确实存在问题,我还要考虑一下。




欢迎光临 数学之家 (http://www.2math.cn/) Powered by Discuz! X3.1