为了账号安全,请及时绑定邮箱和手机立即绑定

#C语言#运用函数,判断一个数是否为素数

#C语言#运用函数,判断一个数是否为素数

C
我要变大神大神大大神 2015-12-12 22:33:03
# include <stdio.h> # include <math.h> bool IsPrime(int x) { int i; for (i=2; i<=sqrt(x); ++i) { if (x%i == 0) break; } if (i == sqrt(x)+1) return true; else return false; } int main(void) { int i; int m; scanf("%d", &m); if (IsPrime(m)) printf("Yes!\n"); else printf("No!\n"); return 0; } 为什么我无论输入什么数,输出的都是No? 我是故意用sqrt的,想减少循环次数,为什么输出总是No? 求大神指教
查看完整描述

1 回答

已采纳
?
小画冰

TA贡献3条经验 获得超2个赞

问题在14行,sqrt(x)不一定是整数,而i是整数,sqrt(x)加1后可能会d大于sqrt(x)后面的那个整数。比如,根号17的值约为4.123,加1后即sqrt(x)+1=5.123,那么要i就不等于5.123,此时return false。实际上我们只要i=5就可以了,所以应该改为if(i==(int)sqrt(x)+1)或if(i>sqrt(x))

查看完整回答
反对 回复 2015-12-12
  • 1 回答
  • 0 关注
  • 2274 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信