【问题描述】 因为151即是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。 写一个程序来找出大过a的最小的回文质数。 【输入格式】 第 1 行: 一个整数 a .(a<100000) 【输出格式】 输出一个回文质数。 【输入样例】 10301 【输出样例】 10501
那不得穷举吗?一个质数函数,一个回文函数即可
bool isprime(int n)
{
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}
bool isback(int n)
{
char buf[20] = {0};
itoa(n,buf,10);
int len = strlen(buf);
int i,j;
for(i=0,j=len-1;i<j;i++,j--)
if(buf[i] != buf[j])
return false;
return true;
}
int main()
{
int n;
scanf("%d",&n);
while(1)
{
if(isprime(n) && isback(n))
{
printf("最小回文质数是:%d",n);
break;
}
n++;
}
}