回文素数(基础版)

题目来源:http://116.56.140.75:8000/JudgeOnline/problem.php?id=1731

1731: 回文素数(基础版)

时间限制: 1 Sec 内存限制: 64 MB

题目描述

11是一个回文素数.因为它不仅是素数,同时还是回文数(回文数,即把一个数字正着读或者倒着读都是一样的,如121,1331等都是回文数). 现在写一个程序把a的b之间所有的回文素数都找出来(2≤a<b≤100,000).

输入

第一行,一个整数N(N<10) 以下N行,每行两个整数a,b.

输出

输出回文素数的列表,每行一个,按从小到大的顺序输出.

样例输入

1
5 200

样例输出

5
7
11
101
131
151
181
191

解析:判断是素数,而且是回文数

代码:

#include<iostream>  
#include<cmath>  
using namespace std; 
  
bool check(int num) 
{ 
    int a[20] = {}; 
    int i = 0; 
    while (num != 0) 
    { 
        a[i++] = num % 10; 
        num /= 10; 
    } 
    for (int j = 0; j < i / 2; j++) 
    { 
        if (a[j] != a[i - j - 1]) 
            return 0; 
    } 
    return 1; 
} 
bool _prime(int num) 
{ 
    if (num == 2) 
        return 1; 
    else if (num % 2 == 0) 
        return 0; 
    for (int i = 3; i <= sqrt(num) + 1e-6; i += 2) 
    { 
        if (num%i == 0) 
            return 0; 
    } 
    return 1; 
} 
void display(int x, int y) 
{ 
    for (int i = x; i <= y; i++) 
    { 
        if (check(i) == true && _prime(i) == true) 
            cout << i << endl; 
    } 
} 
int main() 
{ 
    int n; 
    cin >> n; 
    int x, y; 
    while (n--) 
    { 
        cin >> x >> y; 
        display(x, y); 
    } 
} 
  
/************************************************************** 
    Problem: 1731 
    User: 201730685257 
    Language: C++ 
    Result: 正确 
    Time:0 ms 
    Memory:1496 kb 
****************************************************************/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值