素数回文
链接:https://ac.nowcoder.com/acm/contest/93963/C链接:https://ac.nowcoder.com/acm/contest/93963/C
来源:牛客网
题目描述
现在给出一个素数,这个素数满足两点:
1、 只由1-9组成,并且每个数只出现一次,如13,23,1289。
2、 位数从高到低为递减或递增,如2459,87631。
请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。
输入描述:
输入只有1行。
第1行输入一个整数t,保证t为素数。
数据保证:9<t<109
输出描述:
输出一行字符串,如果t的回文数仍是素数,则输出“prime”,否则输出"noprime"。
示例1
输入
复制
13
输出
复制
prime
说明
13的回文数是131,131是素数
示例2
输入
复制
17
输出
复制
noprime
说明
17的回文数是171,171不是素数(因子有3)
备注:
素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
素数的回文数为题意中的定义,1331不是素数的回文数。
#include <bits/stdc++.h>
using namespace std;
bool isPrime(long long int a) {
if (a <= 1) {
return false;
}
if (a == 2) {
return true;
}
if (a % 2 == 0) {
return false;
}
for (long long int i = 3; i * i <= a; i += 2) {
if (a % i == 0) {
return false;
}
}
return true;
}
int main() {
int a;
cin >> a;
long long int A = a;
while (a/10 > 0) {
a /= 10;
A = A * 10 + a % 10;
}
if (isPrime(A)) {
cout << "prime" << endl;
} else {
cout << "noprime" << endl;
}
return 0;
}
此题在后面的转化为回文询问了同学
想到可以直接对数进行操作 而不是通过字符型操作