素数回文

链接: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;

}

此题在后面的转化为回文询问了同学

想到可以直接对数进行操作 而不是通过字符型操作

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务