素数回文

素数回文

https://ac.nowcoder.com/acm/problem/14703

题目

现在给出一个素数,这个素数满足两点:
①只由 1-9 组成,并且每个数只出现一次,如 13,23,1289。
②位数从高到低为递减或递增,如 2459,87631。
请判断,这个素数的回文数是否为素数(13 的回文数是 131,127 的回文数是 12721)。

解题思路

先求出这个素数的回文数 t,再从 2 到 sqrt(t) 遍历 i,如果 i 能整除 t,则 t 不是素数。

C++代码

#include<iostream>
#include<cmath>
using namespace std;

int main(){
    long long t;
    cin >> t;
    long long a = t / 10;
    while(a){
        int b = a % 10;
        a /= 10;
        t *= 10;
        t += b;
    }
    bool flag = true;
    long long n = sqrt(t);
    for(long long i=2; i<=n; ++i){
        if(t % i == 0){
            flag = false;
            break;
        }
    }
    if(flag)
        cout << "prime" << endl;
    else
        cout << "noprime" << endl;
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:51
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务