8、输入一个正整数,判断是否是回文质数(回文数+质数)。
#include<bits/stdc++.h>
#include<cmath>
#include<algorithm>
int isprime(int a);
using namespace std;
int main(){
int n;
cin >> n;
int nj = n;
int ret = 0;
int count = 0;
int count_n = 0;
int save[10000]={0};
bool jd = isprime(n);
do{
save[ret] = nj % 10;
nj /= 10;
ret++;
}while(nj>0);
if(jd==1){
for (int i = 0; i <= ret-i-1;i++){
if(save[i]==save[ret-i-1]){
count++;
}
}
}
if((ret^1)==ret+1){
count_n = ret / 2;
}else {
count_n = (ret + 1) / 2;
}
if(count_n==count&&n>0&&jd==1){
cout << n << "是一个回文质数";
}else if(count_n!=count||jd!=1){
cout << n << "不是一个回文质数";
}
return 0;
}
int isprime(int a){
int jd1 = 1;
bool jd = 1;
for (int i = 2; i <= sqrt(a);i++){
if(a%i==0){
jd1 = 0;
break;
}
}
if((jd1==1||a==2)&&a!=1){
jd = true;
}else{
jd = false;
}
return jd;
}