亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

#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 關注
  • 2359 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號