素数回文
这道题分为两大步,首先是把输入的数转换为他的回文数,其次是判断回文数是否为素数。
判断是否为素数很简单,就用
但是第一步并不简单,后来我查找了一些资料终于明白了。
首先就是要把这个素数倒着输出,再把原数乘上一定的次幂,相加即可,
经过这一步 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; }#牛客创作赏金赛#