B1015 Reversible Primes (20分)
//大清早起来,打第一题觉得是个水题,打完16分开始卡,卡了十五分钟到20!!!
- 测试点1卡的是
isprime里的if(x<=1)return false;忘写了 - 测试点3卡的是
isprime里的for(int i=2;i<=(int)sqrt(1.0*x);i++),x写成n了。。😭
///x是原数在某进制下反转后的数,n是原数。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#include <math.h>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <stack>
#define lowbit(i)((i)&(-i))
using namespace std;
typedef long long ll;
const int MAX=1e5+10;
const int INF=0x3f3f3f3f;
const int MOD=1000000007;
const int SQR=633;
int n,m;
int change(int a,int b)
{
int t=0,sum=0;
int num[101];
while(a!=0)
{
num[t++]=a%b;
a/=b;
}
for(int i=0;i<t;i++)
{
sum=sum*b+num[i];
}
return sum;
}
bool isprime(int x)
{
if(x<=1)
return false;
for(int i=2;i<=(int)sqrt(1.0*x);i++)
{
if(x%i==0)
return false;
}
return true;
}
int main()
{
while(~scanf("%d",&n))
{
if(n<0)
break;
scanf("%d",&m);
if(isprime(n)&&isprime(change(n,m)))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}