问题
OJ运行超时
Time Limit Exceeded
得分:67‘
题目
题目描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)间的所有回文质数;
输入格式
二个整数 a 和 b
输出格式
输出一个回文质数的列表,一行一个
样例
样例输入
5 500
样例输出
5
7
11
101
131
151
181
191
313
353
373
383
数据范围与提示
提示:找出所有的回文数再判断它们是不是质数(素数)
问题相关代码
#include <stdio.h>
#include <math.h>
#define lt long long
bool Tnop(lt NUM){
int N[10], i = 0, j, UsdNt;
for(NUM = NUM; NUM >= 1; N[i] = NUM % 10, NUM /= 10, i++)
UsdNt = 0;
for (j=0; j < i; j++)
if (N[j] != N[i - j - 1]){
return false;
break;
}
return true;
}
bool Pn(lt NUM){
bool Pn;
for(short i = 2; i <= sqrt(NUM); i++)
{
if(NUM % i == 0){
Pn = false;
break;
}
else
Pn = true;
}
return Pn;
}
bool TnopPn(lt NUM){
if(Pn(NUM) and Tnop(NUM))
return true;
else
return false;
}
int main()
{
long long Min, Max;
scanf("%d%d", &Min, &Max);
for(long long i = Min; i <= Max; i++)
{
if(TnopPn(i))
printf("%d\n", i);
}
return 0;
}
运行结果及报错内容
Time Limit Exceeded
我的解答思路和尝试过的方法
1)函数Tnop判断回文
2)函数Pn判断质数
3)main()调用以上函数,循环判断。
我想要达到的结果
Accept