File name: [USACO1.5]回文质数 Prime Palindromes
Author: NBS//作者
Version:2.2.2 //版本
Date: 20017.03.010// 日期
Description: [USACO1.5]回文质数 Prime Palindromes// 用于详细说明此程序文件完成的主要功能,与其他模块
*************************************************/
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
using namespace std;
bool ispr(int n)
{
for(int k=2;k<=sqrt(n);++k)
if(n%k==0)
return false;
return true;
}
int getsize(int n)
{
int m=1,k=n;
while(k>9)
{
k/=10;
++m;
}
return m;
}
int main()
{
int l,m,n,q,w,i,j,k;
cin>>m>>n;
q=getsize(m);
w=getsize(n);
if(q<=1&&w>=1)
{
if((m<=5)&&(n>=5))
cout<<5<<endl;
if((m<=7)&&(n>=7))
cout<<7<<endl;
}
if((q<=2)&&(w>=2))
{
if((m<=11)&&(n>=11))
cout<<11<<endl;
}
if((q<=3)&&(w>=3))
{
for(int a=1;a<=9;a+=2)
for(int b=0;b<=9;++b)
{
int f=a*100+b*10+a;
if(f<m)
continue;
if(f>n)
return 0;
if(ispr(f))
cout<<f<<endl;
}
}
if((q<=5)&&(w>=5))
{
for(int a=1;a<=9;a+=2)
for(int b=0;b<=9;++b)
for(int c=0;c<=9;++c)
{
int f=a*10000+b*1000+c*100+b*10+a;
if(f<m)
continue;
if(f>n)
return 0;
if(ispr(f))
cout<<f<<endl;
}
}
if((q<=7)&&(w>=7))
{
for(int a=1;a<=9;a+=2)
for(int b=0;b<=9;++b)
for(int c=0;c<=9;++c)
for(int d=0;d<=9;++d)
{
int f=a*1000000+b*100000+c*10000+d*1000+c*100+b*10+a;
if(f<m)
continue;
if(f>n)
return 0;
if(ispr(f))
cout<<f<<endl;
}
}
return 0;
}