PAT Advanced 1015 Reversible Primes(20)

题目描述:

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

算法描述:进制转换

题目大意:

给出一个数N和它的进制D,判断它本身和它的反转是否都是质数(素数)

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;

bool is_prime(int x)
{
    if(x < 2)   return false;
    for(int i = 2 ; i <= x / i ; i ++)
        if(x % i == 0)
            return false;
    return true;
}

int main()
{
    int n, d;
    while(cin >> n >> d, n >= 0)
    {
        bool prime = false;
        if(is_prime(n))
        {
            int res = 0;
            while(n)
            {
                int t = n % d;
                res = res * d + t;
                n /= d;
            }
            if(is_prime(res))   prime = true;
        }
        if(prime)   cout << "Yes" << endl;
        else    cout << "No" << endl;
    }
    return 0;
}
posted @ 2022-08-09 21:05  D_coding_blog  阅读(35)  评论(0)    收藏  举报