【C++】牛客——BC157 素数回文

✨题目链接:

BC157 素数回文


✨题目描述 

现在给出一个素数,这个素数满足两点:

  1. 只由1-9组成,并且每个数只出现一次,如13,23,1289。
  2.  位数从高到低为递减或递增,如2459,87631。

请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。

✨输入描述:

输入只有1行。

第1行输入一个整数t,保证t为素数。

数据保证:9\leq t\leq 10^{9}

✨输出描述:


输出一行字符串,如果t的回文数仍是素数,则输出“prime”,否则输出"noprime"。

✨备注

素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
素数的回文数为题意中的定义,1331不是素数的回文数。

✨示例1


📍输入

13


📍输出


prime


📍说明

13的回文数是131,131是素数

✨示例2


📍输入

17


📍输出

noprime


📍说明

17的回文数是171,171不是素数(因子有3)


✨解题思路

因为9\leq t\leq 10^{9} 还要取t的回文数,所以我们用long long类型

按题目意思 如果 t 是 13 那 131 才是回文数 ,而1331不是回文数

先把 t 的回文数求出,然后判断是否为素数

( 循环从2遍历到这个数超时,所以用sqrt()进行开方 )


✨代码
 

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

typedef long long ll;


bool isPrime(ll x) //判断x是否是素数
{

   for (ll i = 2; i < sqrt(x); i++)
   {
       if (x % i == 0)
       {
           return false;
       }
   }
   return true;
}

int main() 
{
    ll t;
    cin>>t;
    ll tmp = t/10;
    while(tmp)
    {
        t=t*10+tmp%10;
        tmp/=10;
    }
    if(isPrime(t))
    {
        cout<<"prime"<<endl;
    }
    else {
        cout<<"noprime"<<endl;
    }
    return 0;
}


※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一岁就可帅-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值