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

C 語言素數判斷:循環變量初始化位置導致邏輯錯誤

     編輯:程式設計疑難解答

錯誤代碼(左圖)

for (i = 100; i <= 200; i++) {
    // 缺少 j = 0 初始化
    for (j = 2; j <= i/2; j++) {
        if (i % j == 0) { j = 1; break; }
    }
    if (j != 1) printf("%d ", i);
}

正確代碼(右圖)

for (i = 100; i <= 200; i++) {
    j = 0;  // 每次外層循環重置標記
    for (j = 2; j <= i/2; j++) { ... }
}

原因

左圖中 j 只在內層循環賦值,一旦某數被判定為非素數(j=1),後續外層循環 j 保持 1,導致所有後續數字均被誤判為非素數。右圖在外層循環開始時重置 j=0,保證每次判斷獨立。

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