先生成回文数再判断质数
#include <bits/stdc++.h>
using namespace std;
bool lonemath(int a)
{
int i = 2;
for (; i <= sqrt(a); i++)
{
if (a % i == 0)
return false;
}
return true;
}
int main()
{
int data[8] = {0};
int a, b, g;
int val;
cin >> a >> b;
int n, m;
data[0] = 1;
//统计位数
g = a;
for (n = 0; g != 0; n++)
{
g /= 10;
}
g = b;
for (m = 0; g != 0; m++)
{
g /= 10;
}
for (; n <= m; n++)
{
for (;;)
{
val = 0;
//由内向外递增->按大小输出
for (int q = (n + 1) / 2 - 1; q >= 0; q--)
{
if (data[q] > 9)
{
if (data[0] > 9)
{
break;
}
//去掉偶数位
if(data[1]>9){
data[q - 1] += data[q] / 10+1;
data[q] %= 10;
}
else {
data[q - 1] += data[q] / 10;
data[q] %= 10;
}
}
//数组变为数
if (q != n - q - 1)
val += data[q] * pow(10, q) + data[q] * pow(10, n - q - 1);
else
val += data[q] * pow(10, q);
}
if (data[0] > 9)
{
data[0] = 1;
break;
}
if (val >= a && lonemath(val) && val <= b)
cout << val << endl;
data[(n + 1) / 2 - 1] += 1;
}
}
}