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,保證每次判斷獨立。