素数回文串~
有几个要注意的地方:
1.最大的回文串比较小(9989899),可以利用减少不必要的运算~
2.求是否是回文串的时间要比判断是否是素数的时候要短,先判断是否是回文串。
3.数字判断可以注意一下这种写法~
毕竟一开始都超时~
#include <iostream>
#include <cmath>
#include<stdio.h>
using namespace std;
bool isprime(int n)
{
int s=(int )sqrt(double(n));
for(int i=2;i<=s;i++)
if(n%i==0)return false;
return true;
}
bool issame(int n)
{
int i,s(0),m(0);
int t=n;
while(n)
{
m=(n%10);
s=s*10+m;
n/=10;
}
if(s!=t)
return false;
return true;
}
int main()
{
int a,b,c;
while(scanf("%d%d",&a,&b)!=EOF)
{
for(int i=a;i<=b&&i<=9989899;i++)
if((i&1)&&issame(i)&&isprime(i))
printf("%d\n",i);
cout<<endl;
}
return 0;
}