题意:
输入x,y,如果x是素数,并且x转换为y进制,然后翻转得到的也是个素数,输出yes否则no
思路:
打表,乱搞。。
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cstring>
using namespace std;
int is[1000005];
int vis[1000005];
int Isprime()
{
for(int i=2;i<=1000000;i++)
{
if(!vis[i])
{
for(int j=i;j<=1000000;j+=i)
{
vis[j]=1;
}
is[i]=1;
}
}
}
int s[1000000];
int turn (int x,int y)
{
memset(s,0,sizeof(s));
int cnt=0;
while(x!=0)
{
s[++cnt]=x%y;
x/=y;
}
int num=0;
for(int i=1;i<=cnt;i++)
{
num=num*y+s[i];
}
if(is[num])
return 1;
else
return 0;
}
int main()
{
Isprime();
int x,y;
while(cin>>x)
{
if(x<0)
break;
cin>>y;
if(is[x])
{
if(turn(x,y))
{
cout<<"Yes"<<endl;
}
else
cout<<"No"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}