题目链接
数组
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int arr[100010];
bool check(int n){
if(n==1)
return false;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
return false;
}
}
return true;
}
int main()
{
int n,d;
while(true){
cin>>n;
vector <int>q;
if(n>=0){
cin>>d;
if(check(n)==false){
cout<<"No"<<endl;
continue;
}
int index=0;
while(n>0){
int temp=n%d;
arr[index++]=temp;
n/=d;
}
index--;
int fan=0;
for(int j=index;j>=0;j--)
fan+=arr[j]*pow(d,index-j);
if(check(n)&&check(fan)){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}else{
break;
}
}
return 0;
}
动态数组
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool check(int n){
if(n==1)
return false;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
return false;
}
}
return true;
}
int main()
{
int n,d;
while(true){
cin>>n;
vector <int>q;
if(n>=0){
cin>>d;
if(check(n)==false){
cout<<"No"<<endl;
continue;
}
while(n>0){
int temp=n%d;
q.push_back(temp);
n/=d;
}
int fan=0;
for(int j=0;j<q.size();j++)
fan+=q[j]*pow(d,q.size()-j-1);
if(check(n)&&check(fan)){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}else{
break;
}
}
return 0;
}