诗人-with-BYD 2022-08-27 17:19 采纳率: 37.5%
浏览 42
已结题

关于#Limit#的问题,如何解决?素回文数

问题

OJ运行超时
Time Limit Exceeded
得分:67‘

题目
题目描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)间的所有回文质数;
输入格式
二个整数 ab
输出格式
输出一个回文质数的列表,一行一个
样例
样例输入
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

  • 写回答

4条回答 默认 最新

  • 这次真没糖 2022-08-27 20:00
    关注
    
    #include <cstdio>
    using namespace std;
    int main() {
        int i, j, s = 0, a, b, t;
        scanf("%d %d", &a, &b);
        for (i = a; i <= b; i++) { // a到b中找数
            t = i;                 //防止i的值改变,在下一次循环时也可以重新赋值t
            while (t != 0) {       //将i的值倒序
                s = s * 10 + t % 10;
                t = t / 10;
            }
            if (i == s) {                      //判定是不是回文数
                for (j = 2; j * j <= i; j++) { //判定是不是质数
                    if (i % j == 0)
                        break;
                }
                if (j * j > i) { //如果j经历了完整的循环那么它就是质数
                    printf("%d\n", i);
                }
            }
            s = 0; // s回归初始值
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月5日
  • 已采纳回答 8月28日
  • 创建了问题 8月27日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。