题目翻译:
给定一个十进制整数和一个其真实进制,只有当该十进制整数和该十进制整数转换进制后的逆序再转十进制的整数都是素数时候,才输出“Yes”,否则输出“No".
题解思路:
模拟即可
代码:
#include<bits/stdc++.h>
using namespace std;
int N, D;
int ten_to_other(int n, int index)//10进制转其他进制并逆转然后再转10进制
{
string result;
int k = 0;
while (n)
{
result += to_string(n % index);
n /= index;
}
for (int i = 0;i < result.size();i++)
k += (result[i] - '0') * pow(index, result.size() - i - 1);
return k;
}
bool isPrime(int n)
{
if (n == 1) return false;
for (int i = 2;i * i <= n;i++)
if (n % i == 0)
return false;
return true;
}
int main()
{
cin >> N;
while (N >=0 )
{
cin >> D;
if (isPrime(N) && isPrime(ten_to_other(N, D)))
cout << "Yes" << endl;
else
cout << "No" << endl;
cin >> N;
}
}
坑点:
测试点1:注意1不是素数,需要特判