简单题。
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #include<map> #include<queue> using namespace std; int a,b; int h[100],tot; bool f(int x) { if(x==1) return 0; for(int i=2;i*i<=x;i++) if(x%i==0) return 0; return 1; } int main() { while(~scanf("%d",&a)) { if(a<0) break; scanf("%d",&b); if(f(a)==0) printf("No "); else if(a==0) printf("No "); else { int tmp=a; tot=0; while(tmp) h[tot++]=tmp%b,tmp=tmp/b; int num=0; for(int i=0;i<tot;i++) num=num+h[i]*(int)pow(b,tot-i-1); if(f(num)==1) printf("Yes "); else printf("No "); } } return 0; }