首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言 sqrt 條件判斷:i=101 時 j=10 是否滿足 j > sqrt(i)-1

     編輯:程式設計疑難解答

代碼片段:

for (i = 100; i <= 200; i++)
    for (j = 2; j <= sqrt(i); j++)
        if (i % j == 0) break;
        else if (j > sqrt(i) - 1) { /* 輸出質數 */ }

問題:i=101 時,sqrt(101) ≈ 10.0499,sqrt(i)-1 ≈ 9.0499。內層循環 j 從 2 遞增至 10(因 j <= sqrt(i))。當 j=10 時,10 > 9.0499 為真,**會輸出 101**(質數)。

邏輯驗證

  • 質數判斷標準:2 ~ sqrt(n) 無因數。
  • 循環結束條件 j > sqrt(i) 時退出,若未 break,說明無因數。
  • 代碼用 else if (j > sqrt(i) - 1) 近似判斷「循環正常結束」,對整數 j 等價。

優化建議

double limit = sqrt(i);
for (j = 2; j <= limit; j++) {
    if (i % j == 0) break;
}
if (j > limit) printf("%d ", i); // 更清晰、避免重複 sqrt
  • 提取 sqrt(i) 到變量,避免重複計算。
  • 循環後直接判斷 j > limit,語義明確。

理解浮點數比較與循環邊界,寫出高效質數篩選代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved