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 != 0)。邏輯流程:
l 保持初值 1(真)。j 使 i % j == 0,說明 i 為合數,將 l 置 0(假)並跳出循環。l == 1 表示無因數,即質數;l == 0 表示合數。j * j <= i 或 j <= sqrt(i),減少無效迭代。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;
}