题意大概是,给你一个数,再给你一个进制数,让你判断这个数在这个进制下翻转的数是否是素数。
坑点有一个 1不是素数。
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
using namespace std;
bool isPrime(int num)
{
if (num == 1)
return false;
if (num == 2 || num == 3)
return true;
if (num % 2 == 0)
return false;
for (int i = 3; i <= sqrt(num); i = i + 2)
{
if (num % i == 0)
return false;
}
return true;
}
int main()
{
vector<int> s;
int n,d;
while (cin>>n&&n>=0)
{
int nn=n;
s.clear();
cin>>d;
while (n)
{
s.push_back(n%d);
n=n/d;
}
int p,res=0,len;
len=s.size();
for (p=0;p<len;p++)
{
res=res*d+s[p];
}
if (isPrime(nn)&&isPrime(res))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}