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

C++ 質數判斷:if(l) 條件含義與 101-200 素數輸出邏輯解析

     編輯:程式設計綜合問答

代碼片段

int l = 1;
for (j = 2; j <= (i/j+1); j++) {
    if (i % j == 0) {
        l = 0;
        break;
    }
}
if (l) {          // 關鍵行
    cout << i << endl;
    t++;
}

if(l) 含義

if (l) 等價於 if (l != 0)。邏輯流程:

  1. 假設 i 為質數,l 保持初值 1(真)。
  2. 若存在因數 j 使 i % j == 0,說明 i 為合數,將 l 置 0(假)並跳出循環。
  3. 循環結束後,l == 1 表示無因數,即質數;l == 0 表示合數。

優化建議

  • 內層循環上限可改為 j * j <= i 或 j <= sqrt(i),減少無效迭代。
  • 外層循環從 101 起步,步長 2 跳過偶數:for (i = 101; i <= 200; i += 2)。
  • 使用 bool isPrime = true; 替代整型標誌,語義更清晰。

完整優化版

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int count = 0;
    cout << "101-200 之間的質數:" << endl;
    for (int i = 101; i <= 200; i += 2) {
        bool isPrime = true;
        int limit = (int)sqrt(i);
        for (int j = 3; j <= limit; j += 2) {
            if (i % j == 0) { isPrime = false; break; }
        }
        if (isPrime) { cout << i << ' '; count++; }
    }
    cout << "\n共 " << count << " 個質數。" << endl;
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved