while (condition) {
int c = 0; // 錯誤:放在循環外,導致累加不歸零?實際圖片不可見,推測邏輯
// 判斷素數...
c += prime;
}
錯誤:計數器 c 在外層循環前初始化,內層循環需重置時未重置,導致結果異常(如一直返回 0 或累加錯誤)。
修正:在需要重新計算的循環開始處初始化:
for (int i = 2; i <= n; i++) {
int c = 0; // 這裡初始化,每次外層循環歸零
for (int j = 2; j*j <= i; j++) {
if (i % j == 0) { c = 1; break; }
}
if (c == 0) sum += i;
}
O(n log log n) 替代試除法 O(n√n)。int 溢出,大數求和用 long long。