#include "math.h"
int isprime(int a)
{int n;
for(n=2;n<a;n++)
if(a%n==0) return 0;
return 1;
}
int main(void)
{int a;
scanf("%d",&a);
if(isprime(a)) printf("YES");
else printf("NO");
getch();
return 0;
}
为什么在被调用函数 isprime中的if语句的后面不能接else语句,接了之后程序运行的结果就错了!去掉就正常了!!
请高手帮忙解答一下!!
谢谢了!
哦
明白你的意思
程序是没有问题的,可是逻辑就有问题
按你的思路走,不管怎么样 for语句只循环一次就返回了。所以不管哪个数进入for循环 执行了一次就返回了,这时候 能被2除尽的数就不是素数,否则就是素数了。所以就出现了9是素数的情况。明白了吗?
满意请点五星 谢谢..
int isprime(int a)
{int n;
for(n=2;n<a;n++){
if(a%n==0)
return 0;
else
return 1;
}
}
一定要养成写大括号的习惯,特别是for, while等循环语句, 要不自己写出来的东西连自己都看不懂
如果if 后面接了else语句. 那么在else return 1;后面还必须在return一次. 否则编译器会判断该函数没有返回.
如:
int isprime(int a)
{int n;
for(n=2;n<a;n++)
if(a%n==0) return 0;
else return 1;
return 1;
}