链接: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】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/312494
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!