1C:素数回文

链接:https://ac.nowcoder.com/acm/contest/19859/C
来源:牛客网

题目描述

现在给出一个素数,这个素数满足两点:

1、  只由1-9组成,并且每个数只出现一次,如13,23,1289。

2、  位数从高到低为递减或递增,如2459,87631。

请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。

输入描述:

输入只有1行。
第1行输入一个整数t,保证t为素数。
数据保证:9<t<109

输出描述:

输出一行字符串,如果t的回文数仍是素数,则输出“prime”,否则输出"noprime"。
示例1

输入

13

输出

prime

说明

13的回文数是131,131是素数
示例2

输入

17

输出

noprime

说明

17的回文数是171,171不是素数(因子有3)

基于1A和1B的函数考量,初试如下:

 

初试-终版
 #include<bits/stdc++.h>

using namespace std;

typedef long long int ll;

//获取数位
int Digit(ll num){
    int count=0;
    while(num){
        num=num/10;
        count++;
    }
    return count;

}


//判素
bool Isprime(ll n){
    if(n==1) return false;
    int k=sqrt(n);
    for(int i=2;i<=k;i++){
        if(n%i==0)
            return false;
    }

    return true;

}


/*
void test_for_Isprime(){
    for(int i=1;i<10;i++){
        if(Isprime(i)){
            cout<<i<<"prime"<<endl;
        }
    }
}
*/


//获取回文数
ll trans_pal_num(ll num){
    int digit=Digit(num);
    ll temp=num,ans;
    stack<int> s;
    for(int i=0;i<digit;i++){
        s.push(temp%10);
        temp=temp/10;
    }

    ans=num*pow(10,digit-1);

    for(int j=0;j<digit-1;j++){
        temp=s.top();
        s.pop();
        ans+=temp*pow(10,j);
    }

    return ans;
}





int main(){
    ll num;
    cin>>num;
    if(Isprime(trans_pal_num(num))){
        cout<<"prime"<<endl;
    }else{
        cout<<"noprime"<<endl;
    }




    return 0;
}

 

原文链接: https://www.cnblogs.com/walter-mitty/p/17054898.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    1C:素数回文

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/312494

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 下午12:25
下一篇 2023年2月16日 下午12:25

相关推荐