解题思路:
发现有个规律ABCCBA,ABCDDCBA这种偶数形式的一定不是质数(11除外),一定是11的倍数,所以只要找奇数位长度的数了
直接暴力求解,剪去位数为偶数的分支,以节省时间。
bool isPrime(int num)
{
if (num < 2)
return false;
for (int i = 2; i <= sqrt(num); i++)
{
if (num%i == 0)
return false;
}
return true;
}
bool isPalindrome(int num)
{
int a, b, c;
a = num;
b = 0;
c = 0;
while (num)
{
c = num % 10;
num /= 10;
b = b * 10 + c;
}
if (b == a)
return true;
else
return false;
}
int primePalindrome(int N) {
while (!isPrime(N) || !isPalindrome(N))
{
++N;
//跳过偶数位数,偶数位的回文数都能被11整除
if (N > pow(10, 1) && N < pow(10, 2) && N!=11) N = pow(10, 2);
if (N > pow(10, 3) && N < pow(10, 4)) N = pow(10, 4);
if (N > pow(10, 5) && N < pow(10, 6)) N = pow(10, 6);
if (N > pow(10, 7) && N < pow(10, 8)) N = pow(10, 8);
}
return N;
}