列印 10000 以內所有回文數:正讀反讀相同的整數。如 11、121、1221、1331…
原始碼 printf 訊息寫「回文素數」實為錯誤,且判斷函數 isPalindrome 將參數 m 直接修改導致後續無法使用。修正重點:
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(int n);
int main() {
printf("10000 以內的回文數:\n");
for (int i = 0; i < 10000; i++) { // 從 0 開始,包含個位數
if (isPalindrome(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
// 數字反轉法判斷回文
bool isPalindrome(int n) {
if (n < 10) return true; // 0~9 皆為回文
int original = n, reversed = 0;
while (n > 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
return original == reversed;
}

10000 以內回文數共 199 個:
個位數 10 個、兩位數 9 個(11~99)、三位數 90 個(101~999)、四位數 90 個(1001~9999)。
bool isPalindromeStr(int n) {
char s[6];
sprintf(s, "%d", n);
int len = strlen(s);
for (int i = 0; i < len / 2; i++) {
if (s[i] != s[len - 1 - i]) return false;
}
return true;
}
字串法直觀易懂,適合處理超大整數或不同進位制回文判斷。