1015 Reversible Primes
题目链接
https://pintia.cn/problem-sets/994805342720868352/problems/994805495863296000
解题思路
1.题目不难,就是进制转换与素数判断;
总结
1.素数判断:1不是素数!!! 我一个点就是卡在这了~~;
2.我对于进制转换的思路一般就是把其转换成十进制,再由十进制数转换成其他的数;但这题也可以存储相应数位上的数;不用转换成十进制。
代码展示
#include<bits/stdc++.h>
using namespace std;
/*
*/
vector<int>q;
bool IsPrime(int x){
if(x<2)return false;
for(int i=2;i*i<=x;i++){
if(x%i==0)return false;
}
return true;
}
//判断素数
void Get(int x,int radix){
q.clear();
do{
int f=x%radix;
q.push_back(f);
x/=radix;
}while(x);
}
int GetTen(int x,int radix){
int ans=0;
for(int i=0;i<q.size();i++){
ans=ans*radix+q[i];
}
return ans;
}
//法1
int reverse(int key, int radix) {
int rever = 0;
while (key) {
rever = rever * radix + key % radix;
key /= radix;
}
return rever;
}
//法2
int main(){
int n,d;
while(true){
cin>>n;
if(n<0)break;
cin>>d;
if(IsPrime(n)){
//Get(n,d);
//int ans=GetTen(n,d);
int ans=reverse(n,d);
if(IsPrime(ans))cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
else cout<<"No"<<endl;
}
return 0;
}