当前位置: 代码迷 >> 综合 >> pat 1015 Reversible Primes
  详细解决方案

pat 1015 Reversible Primes

热度:22   发布时间:2024-01-14 23:18:18.0

若这个数为质数,那么将这个数

(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;
}