题目
现在给出一个素数,这个素数满足两点:
①只由 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; }