PAT 1015. Reversible Primes (20)

http://www.patest.cn/contests/pat-a-practise/1015

#include<cstdio> 
#include<cstring>

using namespace std;

int n, d;
char s[1000];

int toRadix(int x, int d) {
    int result = 0;
    while(x) {
        result = result * d + x % d;
        x /= d;
    }
    return result;
}

bool isPrime(int x) {
    if (x < 2) return false;
    for(int i = 2; i * i <= x; ++i) {
        if(!(x % i)) return false;
    }
    return true;
}
int main() {
    while(scanf("%d", &n), n > 0) {
        scanf("%d", &d);
        printf("%s\n", (isPrime(n) && isPrime(toRadix(n, d))) ? "Yes" : "No");
    }
    return 0;
}

 

posted @ 2015-08-03 14:35  ACSeed  Views(108)  Comments(0)    收藏  举报