个人思路就是先检验是否为回文数,再检验是否为质数。回文数是用倒置来验证,数目大是建议用字符串,但这道题是整数递增来一个个验证的,数据类型匹配不了,我脑子实在没能转过来害;质数的话已经是平方减半了,不知道还能不能优化。
目前最后一个超时是1.02s,测试数据是5 100000000,卑微请各位大佬赐教!
代码如下:
#include<stdio.h>
int prime(int x){
int i;
for(i=2;i*i<=x;i++)
if(x%i==0) return 0;
return x<=1?0:1;
}
int isHuiwenNumber(int n)
{
int sum,tmp;
tmp=n;
sum=0;
while(n)
{
sum=sum*10+n%10;
n/=10;
}
if(tmp == sum)
return 1;
else
return 0;
}
int main(){
int a,b,i;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++)
{
if(isHuiwenNumber(i))
{
if(prime(i))
printf("%d\n",i);
}
}
}