缩短求回文质数问题的时间
因为151既是一个质数又是一个回文数(从左到右和从右到左看是一样的),所以151是回文质数.写一个程序来找出范围[a,b](5<=a<b<=100,000,000)间的所有回文质数.
[code][code][/code][/code]
#include<stdio.h>
#include<math.h>
int symn(long m) //检验是否为回文数
{
long temp = m,n=0;
while (temp){
n = n*10+temp%10;
temp = temp/10;
}
return (m == n);
}
int isprime(long n) //检验是否为质数
{
long i;
for(i=2;i<(int)(sqrt(n)+1);i++)
if(n%i==0)break;
if(i==(int)(sqrt(n)+1))
return 1;
else
return 0;
}
int main() //主函数
{
long a=0,b=0,i=0,j=0;
scanf("%ld%ld",&a,&b);
for(i=a;i<b+1;i++)
if(symn(i)&&isprime(i))
printf("%ld\n",i);
return 0;
}
程序是对的,可以运行,但是测试数据有两个超时,超过了1秒,如何缩减程序运行的时间???