题解:意思是让你先判断n是不是素数,然后将n在d进制下的数反转并转换为十进制的数sum,然后判断sum是否为素数。n和sum都为素数就输出Yes。
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int ,int > PII;
const int N=1e6+10;
const int mod=1e9;
bool judge(int u,int rd){
if(u<2) return false;
for(int i=2;i<=u/i;i++){
if(u%i==0) return false;
}
vector<int > vt;
int t=u;
while(t){
vt.push_back(t%rd);
t/=rd;
}
int sum=0;
for(int i=0;i<vt.size();i++){
sum=sum*rd+vt[i];
}
if(sum<2) return false;
for(int i=2;i<=sum/i;i++){
if(sum%i==0) return false;
}
return true;
}
int main(){
int n,d;
while(cin>>n){
if(n<0) break;
cin>>d;
if(judge(n,d)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
|