1002 素数回文 试除法
链接:https://ac.nowcoder.com/acm/contest/26656/1002
来源:牛客网
题目描述
现在给出一个素数,这个素数满足两点:
1、 只由1-9组成,并且每个数只出现一次,如13,23,1289。
2、 位数从高到低为递减或递增,如2459,87631。
请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。
输入描述:
输出描述:
输出一行字符串,如果t的回文数仍是素数,则输出“prime”,否则输出"noprime"。
备注:
素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
素数的回文数为题意中的定义,1331不是素数的回文数。
分析
创建好回文数,再判断一下是不是素数就可以了
需要关注的是,数要开long long ,然后字符串的erase 参数是迭代器。
//-------------------------代码----------------------------
#define int ll
const int N = 1e5+10;
int n,m;
void solve()
{
string s;
cin>>s;
string tmp = s;
reverse(all(tmp));
tmp.erase(tmp.begin());
s += tmp;
// cout<<s<<endl;
int x = 0;
for(int i = 0;i<s.size() ;i ++ ) {
x = x * 10 + s[i] - '0';
}
// if(x == 1) {
// cout<<"noprime"<<endl;rt;
// }
for(int i = 2;i <= x / i;i++) {
if(x % i == 0) {
cout<<"noprime"<<endl;rt;
}
}
cout<<"prime"<<endl;
}
signed main(){
clapping();TLE;
// int t;cin>>t;while(t -- )
solve();
// {solve(); }
return 0;
}
/*样例区
*/
//------------------------------------------------------------