晚上在一个OJ系统上玩,看到了一个回文质数问题,如下:
我想这绝对是小case呀,于是就有了如下的代码:
#include <stdio.h>
#include <math.h>
int ishuiwen(int n);
int iszhishu(int n);
int main()
{
int a,b,i;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++)
if(ishuiwen(i)&&iszhishu(i))
printf("%d\n",i);
return 0;
}
int ishuiwen(int n)
{
int a=n;
int b,sum=0;
while(a)
{
b=a%10;
sum=sum*10+b;
a=a/10;
}
if(sum==n)
return 1;
else
return 0;
}
int iszhishu(int n)
{
int a=(int)sqrt((double)n);
int i;
int flag=1;
for(i=2;i<=a;i++)
if(n%i==0)
{
flag=0;
break;
}
return flag;
}
子函数ishuiwen和iszhishu虽然名字土气,但是用的可都是省时省力的好办法啊。然而,提交后9个测试点有一个返回了"TLE“,所以是我的程序没优化好,超时了?
这也是小问题呀,改呗!我看了看主程序,想起来,如果待测试数据为偶数,则一定不是质数啦,so~,就有了下面的主函数: