素数回文

这道题分为两大步,首先是把输入的数转换为他的回文数,其次是判断回文数是否为素数。

判断是否为素数很简单,就用

但是第一步并不简单,后来我查找了一些资料终于明白了。

首先就是要把这个素数倒着输出,再把原数乘上一定的次幂,相加即可,

经过这一步 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;
}

#牛客创作赏金赛#
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务