被测试点2坑了很久。。。判断素数时一定要加入判断n<=1 的情形
//
// main.cpp
// PATA1015
//
// Created by Phoenix on 2018/1/31.
// Copyright © 2018年 Phoenix. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
bool isPrime(int n) {
if(n <= 1) return false;
int k = (int) sqrt(1.0 * n);
for(int i = 2; i <= k; i++) {
if(n % i == 0) return false;
}
return true;
}
int reverse(int n, int radix){
int ans = 0, k = 0;
int num[111];
while(n > 0) {
num[k++] = n % radix;
n /= radix;
}
for(int i = 0; i < k; i++) {
ans = ans * radix + num[i];
}
return ans;
}
int main(int argc, const char * argv[]) {
int n, radix;
scanf("%d", &n);
while(n > 0) {
scanf("%d", &radix);
bool flag = isPrime(n);
if(flag == false) {
printf("No\n");
} else{
int m = reverse(n, radix);
//printf("%d ",m);
if(isPrime(m) == true){
printf("Yes\n");
} else{
printf("No\n");
}
}
scanf("%d", &n);
}
return 0;
}