結合質數判斷 isPrimer() 與迴文數判斷 isPalindrome(),遍歷 2~9999 找出同時滿足兩個條件的數(迴文質數)。注意原碼邏輯有誤:isPalindrome(isPrimer(i)) 應為 isPalindrome(i)。
isPrimer(n):試除法至 n/2,質數回傳 n,否則 0。isPalindrome(m):同上文迴文判斷。if (isPrimer(i) && isPalindrome(i)) 輸出。#include <stdio.h>
int isPrimer(int n);
int isPalindrome(int m);
int main() {
for (int i = 2; i < 10000; i++)
if (isPrimer(i) && isPalindrome(i))
printf("迴文質數:%d\n", i);
return 0;
}
int isPrimer(int n) {
for (int i = 2; i <= n/2; i++)
if (n % i == 0) return 0;
return n;
}
int isPalindrome(int m) {
if (m < 10) return 0;
int a[5], i=0, num=m;
while (m) { a[i++] = m%10; m/=10; }
for (int j=i-1; j>=0; j--)
if (a[j] != num%10) return 0;
else num/=10;
return 1;
}

10000 以內的迴文質數有:2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929, 10301...(超過 10000 止)。