素数回文
这道题分为两大步,首先是把输入的数转换为他的回文数,其次是判断回文数是否为素数。
判断是否为素数很简单,就用
但是第一步并不简单,后来我查找了一些资料终于明白了。
首先就是要把这个素数倒着输出,再把原数乘上一定的次幂,相加即可,
经过这一步 b就是反转后的数,而sum就相当于一个计次的,每做一次操作就+1
然后就是把两部分拼接起来就是他的回文数了
#include<iostream>
#include<cmath>
using namespace std;
bool ifis(long long n)
{
if(n<=1)
return false;
for(int i = 2;i<=sqrt(n);i++){
if(n%i==0)
return false;
}
return true;
}
int main(){
int t,a=0,b=0,sum = 0;
cin>>t;
int k = t;
while(k){
a = k%10;
k /= 10;
b = b*10+a;
sum++;
}
t /= 10;
long long m = t*pow(10,sum)+b;
if(ifis(m))
cout<<"prime"<<endl;
else
cout<<"noprime"<<endl;
return 0;
}
#牛客创作赏金赛#
睿联技术公司福利 62人发布