若这个数为质数,那么将这个数
(1)转为D进制数
(2)将这个D进制数反转
(3)将反转后的数再转为十进制数,这个十进制数依然是素数。 这样我们就输出“Yes”。
否则输出“No”
需要注意的地方,0和1不是质数
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;bool isPrime(int a)
{if (a==0 || a==1)return false;int sq=(int)sqrt(double(a));for(int i=2;i<sq;i++){if(a%i==0){return false;}}return true;
}int reverse(int a,int radix)
{vector<int> vec;while(a>=radix){vec.push_back(a%radix);a=a/radix;}vec.push_back(a);int result=0;for(int i=0;i<vec.size();i++)result = result*radix + vec[i];return result;
}int main()
{int a,b;cin>>a;while(a > 0){cin>>b;if(isPrime(a)){if(isPrime(reverse(a,b)))cout<<"Yes"<<endl;elsecout<<"No"<<endl;}elsecout<<"No"<<endl;cin>>a;}reverse(23,2);return 0;
}