#include <iostream>
#include<cmath>
using namespace std;
bool isprime(int a)//判断质数
{
for(int i=3;i<=sqrt(a);i+=2)//因为开头结尾一定不是2的倍数所以直接+=2
{
if(a%i==0)
return false;
}
return true;
}
int main()
{
int a,b;
cin >> a >> b;
if(a==5&&b<7)
{
cout << 5;
return 0;
}
if(a<=7)
cout << 5 << endl << 7 << endl;
if(b<11)
return 0;
if(a<=11)
cout << 11 << endl;
for(int i=1;i<=9;i+=2)
{
for(int j=0;j!=10;++j)
{
int re = i*100+j*10+i;//取回文数
if(b<re) return 0;if(a>re)break;//判断范围
if(isprime(re)==true)
cout << re << endl;
}
}
for(int i=1;i<=9;i+=2)
{
for(int j=0;j!=10;++j)
{
int re = i*1000+j*100+j*10+i;
if(b<re) return 0;if(a>re)break;
if(isprime(re)==true)
cout << re << endl;
}
}
for(int i=1;i<=9;i+=2)
{
for(int j=0;j!=10;++j)
{
for(int k=0;k!=10;++k)
{
int re = i*10000+j*1000+k*100+j*10+i;
if(b<re) return 0;if(a>re)break;
if(isprime(re)==true)
cout << re << endl;
}
}
}
for(int i=1;i<=9;i+=2)
{
for(int j=0;j!=10;++j)
{
for(int k=0;k!=10;++k)
{
int re = i*100000+j*10000+k*1000+k*100+j*10+i;
if(b<re) return 0;if(a>re)break;
if(isprime(re)==true)
cout << re << endl;
}
}
}
for(int i=1;i<=9;i+=2)
{
for(int j=0;j!=10;++j)
{
for(int k=0;k!=10;++k)
{
for(int m=0;m!=10;++m)
{
int re = i*1000000+j*100000+k*10000+m*1000+k*100+j*10+i;
if(b<re) return 0;if(a>re)break;
if(isprime(re)==true)
cout << re << endl;
}
}
}
}
for(int i=1;i<=9;i+=2)
{
for(int j=0;j!=10;++j)
{
for(int k=0;k!=10;++k)
{
for(int m=0;m!=10;++m)
{
int re = i*10000000+j*1000000+k*100000+m*10000+m*1000+k*100+j*10+i;
if(b<re) return 0;if(a>re)break;
if(isprime(re)==true)
cout << re << endl;
}
}
}
}
for(int i=1;i<=9;i+=2)
{
for(int j=0;j!=10;++j)
{
for(int k=0;k!=10;++k)
{
for(int m=0;m!=10;++m)
{
for(int n=0;n!=10;++n)
{
int re = i*100000000+j*10000000+k*1000000+m*100000+n*10000+m*1000+k*100+j*10+i;
if(b<re) return 0;if(a>re)break;
if(isprime(re)==true)
cout << re << endl;
}
}
}
}
}
return 0;
}
最后一个点都过了,第二个点显示On line 1 column 1, read 9, expected 7.
附第二个点的输出:
757 787 797 919 929 10301 10501 10601 11311 11411 12421 12721 12821 13331 13831 13931