1015. Reversible Primes

Direct Link

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

bool prime(int x)
{
    if(x <= 1)  return false;
    int limit = floor(sqrt(x)+0.5);
    for(int i = 2; i <= limit; i++)
    {
        if(x%i == 0)
        {
            return false;
        }
    }
    return true;
}

int reverse(int n,int d)
{
    int bit[20];
    int len = 0;
    while(n)
    {
        bit[len++] = n%d;
        n /= d;
    }
    int res = 0;
    for(int i = 0; i < len; i++)
    {
        res = (res*d+bit[i]);
    }
    return res;
}


int main()
{
    int n,d;
    while(cin >> n, n >= 0)
    {
        cin >> d;
        if(prime(n))
        {
            int rn = reverse(n,d);
            if(prime(rn))
            {
                cout << "Yes" << endl;
            }
            else
            {
                cout << "No" << endl;
            }
        }
        else
        {
            cout << "No" << endl;
        }
    }
    return 0;
}