常用的判断素数的函数要会写
再就是能明白题目说的意思
每一行输入一个十进制的数和一个目标进制,首先判断这个十进制数是否为素数如果是素数那么再判断这个数转换为目标进制再反转过来是否为素数如果反转也是素数那么就输出yes否则为no
例如 输入5 2,5为素数,那么将5转换为2进制101,101反转后仍然是101,再将101转换为十进制判断是不是素数
贴一下ac代码:
#include<iostream>
using namespace std;
bool isprime(int x)//判断素数
{
if(x==1) return false;
for(int i=2;i*i<=x;++i)
if(x%i==0) return false;
return true;
}
bool cal(int num,int d)//计算反转后的十进制数,并判断是否为素数
{
int res=0;
while(num) res=res*d+(num%d),num/=d;
return isprime(res);
}
int main()
{
int num,d;
while((cin>>num)&&num>0)
{
cin>>d;
int flag=1;
if(isprime(num))
if(cal(num,d)) puts("Yes"),flag=0;
if(flag) puts("No");
}
return 0;
}