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