1.这道题考了判断质数,进制转换。
2.将一个10进制数逆转,用到了
int res=0;
while(n){
res=res*10+n%10;
n/=10;
}
而这道题同样可以用这种方法来实现转换。
long long res = 0;
while(n)
{
res = res * r + n % r;
n /= r;
}
r代表转换的进制。
#include <iostream>
#include<algorithm>
using namespace std;
bool is_prime(int n)
{
if (n == 1) return false;
for (int i = 2; i <= n / i; i ++ )
if (n % i == 0) return false;
return true;
}
bool check(int n, int r)
{
if (!is_prime(n)) return false;
long long res = 0;
while(n)
{
res = res * r + n % r;
n /= r;
}
if (is_prime(res)) return true;
else return false;
}
int main()
{
int n, r;
while(cin >> n >> r, n >= 1)
{
if (check(n, r)) puts("Yes");
else puts("No");
}
return 0;
}