第一次的
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
bool judge=0;
int a,b;
int reverse=0;
int x=1;
int y=0;
scanf("%d %d",&a,&b);
for(int i=a;i<=b;i++){
for(int j=1;x!=0;j++){
x=(int)(i/pow(10,j));
y++;
}
for(int j=0;j<y;j++){
x=i/(int)(pow(10,j))%10;
if(x!=i/(int)(pow(10,y-j-1))%10)break;
reverse+=(int)(x*pow(10,y-j-1));
}
if(reverse==i){
judge=1;
for(int k=2;k<i;k++){
if(i%k==0){
judge=0;
break;
}
}
}
y=0;
x=1;
reverse=0;
if(!judge)continue;
printf("%d\n",i);
judge=0;
}
return 0;
}
第二次的
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
int num = 4;
bool judge = 1;
int a, b;
int x = 1,e = 0;
scanf("%d %d", &a, &b);
int e3 = 9, e5 = 9, e7 = 9;
x = 1;
for (int j = 1; x != 0; j++)
{
x = (int)(b / pow(10, j));
e++;
}
switch (e)
{
case 9:
break;
case 8:
e7 = (int)(b / pow(10, 7));
break;
case 7:
e7 = (int)(b / pow(10, 6));
break;
case 6:
e5 = (int)(b / pow(10, 5));
e7 = 0;
break;
case 5:
e5 = (int)(b / pow(10, 4));
e7 = 0;
break;
case 4:
e3 = (int)(b / pow(10, 3));
e5 = 0;
e7 = 0;
break;
case 3:
e3 = (int)(b / pow(10, 2));
e5 = 0;
e7 = 0;
break;
default:
e3=0;e5=0;e7=0;
break;
}
for (int i = 0; i <= e7; i++)
for (int j = 0; j <= e5; j++)
for (int k = 0; k <= e3; k++)
for (int g = 0; g <= 9; g++)
{
if (i != 0)
num = i + j * 10 + k * 100 + g * 1000 + k * 10000 + j * 100000 + i * 1000000;
if (j != 0 && i == 0)
num = j + k * 10 + g * 100 + k * 1000 + j * 10000;
if (k != 0 && i == 0 && j == 0)
num = k + g * 10 + k * 100;
if (i == 0 && j == 0 && k == 0 && g >2)
num = g+2;
for (int a = 2; a < num; a++)
{
if (num % a == 0)
{
judge = 0;
break;
}
}
if (judge && num >= a && num <= b)
printf("%d\n", num);
judge = 1;
}
return 0;
}