boolisPrime(int n){ if (n <= 1) returnfalse; // 1不是素数 int sqr = (int)sqrt(1.0 * n); for (int i = 2; i <= sqr; i++) if (n % i == 0) returnfalse; returntrue; }
intreverseN(int n, int d){ int arr[100] = {0}, len = 0; while (n) { arr[len++] = n % d; n /= d; } int res = 0; for (int i = 0; i < len; i++) { res = res * d + arr[i]; } return res; }
intmain(){ int n, d; while (scanf("%d", &n) != EOF && n > 0) { scanf("%d", &d); if (!isPrime(n)) { printf("No\n"); continue; } n = reverseN(n, d); printf("%s", isPrime(n) ? "Yes\n" : "No\n"); }