✨题目链接:
BC157 素数回文
✨题目描述
现在给出一个素数,这个素数满足两点:
- 只由1-9组成,并且每个数只出现一次,如13,23,1289。
- 位数从高到低为递减或递增,如2459,87631。
请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。
✨输入描述:
输入只有1行。
第1行输入一个整数t,保证t为素数。
数据保证:
✨输出描述:
输出一行字符串,如果t的回文数仍是素数,则输出“prime”,否则输出"noprime"。
✨备注
素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
素数的回文数为题意中的定义,1331不是素数的回文数。
✨示例1
📍输入
13
📍输出
prime
📍说明
13的回文数是131,131是素数
✨示例2
📍输入
17
📍输出
noprime
📍说明
17的回文数是171,171不是素数(因子有3)
✨解题思路
因为 还要取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;
}
※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持