A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.
Now given any two positive integers N (<105) and D (1<D≤10), you are supposed to tell if N is a reversible prime with radix D.
Input Specification:
The input file consists of several test cases. Each case occupies a line which contains two integers N and D. The input is finished by a negative N.
Output Specification:
For each test case, print in one line Yes
if N is a reversible prime with radix D, or No
if not.
Sample Input:
73 10
23 2
23 10
-2
Sample Output:
Yes
Yes
No
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
radix D 进制数,几进制
-
代码
#include<iostream> #include<vector> #include<string> #include<math.h> #include<algorithm> #include<stack> using namespace std; int n, d; **int isprime(int x) { for(int i = 2; i <= sqrt(x); i++) { if(x % i == 0) { return 0; } } return 1; }** int main(){ **while(scanf("%d", &n) != EOF) {** if(n < 0) break; if(isprime(n) == 0) { cout << "No" << endl; continue; } int len = 0, arr[1001]; **do{ arr[len++] = n % d; n = n / d; }while(n != 0);** **for(int i = 0; i < len; i++) { n = n * d + arr[i]; }** if(isprime(n)) { cout << "Yes" << endl; } else { cout << "No" << endl; } **}** return 0; }
-
总结
用来练判断素数的简单题,英文radix一开始不知道。