题目描述
进制转化+质数判断
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> to_d(int n, int d)
{
vector<int> ans;
do ans.push_back(n % d), n /= d; while (n);
return ans;
}
int to_10(vector<int> n, int d)
{
int t = 1, ans = 0;
for (int i = n.size() - 1; i >= 0; i --)
ans += n[i] * t, t *= d;
return ans;
}
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;
}
int main()
{
int n, d;
while (true)
{
cin >> n;
if (n < 0) break;
cin >> d;
vector<int> v = to_d(n, d);
n = to_10(v, d);
if (is_prime(n)) puts("Yes");
else puts("No");
}
}
这也不能AC啊