题目链接:https://www.patest.cn/contests/pat-a-practise/1015
题目大意:如果一个人正整数N是素数,并且N的radix进制数的逆置所表示的10进制数仍是素数,那么N为reversible prime。给定若该N和radix,判断N是否是reversible prime。
解题思路:
isPrime(int x),用来判断x是否是素数
raverse(n,radix),用来将求n的radix进制数的逆置所表示的10进制数的值
代码如下:
#include <iostream>
using namespace std;
bool isPrime(int x){//判断素数
if(x<2)
return false;
int i;
for(i=2;i*i<=x;i++){
if(x%i==0)
return false;
}
return true;
}
int reverse(int n,int radix){
int tmp=0;
while(n){
tmp=tmp*radix+n%radix;
n=n/radix;
}
return tmp;
}
int main(int argc, char const *argv[])
{
int N,radix;
while(cin>>N&&N>0){
cin>>radix;
if(isPrime(reverse(N,radix))&&isPrime(N))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}