题主考虑的复杂了,以下代码,供参考:
#include <stdio.h>
int isPrime(int n)
{
int i;
if (n <= 3) return n > 1;
for (i = 2; i * i <= n; i++)
if (n % i == 0) return 0;
return 1;
}
int isPalindrome(int n)
{
int tmp = 0, k = n;
while (k) {
tmp = tmp * 10 + k % 10;
k /= 10;
}
return tmp == n;
}
int main()
{
int i, cnt, a, b;
scanf("%d%d", &a, &b);
for (i = a, cnt = 0; i <= b; i++)
if (isPrime(i) && isPalindrome(i))
printf(++cnt % 10 == 0 ? "%d\n" : "%d ", i);
if (cnt % 10 != 0)
printf("\n");
printf("%d到%d之间既是回文数又是质数的数有%d个.", a, b, cnt);
return 0;
}