我丢,又读假题了。。。理解成十进制系统下的质数判断了
看到系统,不免想起被离散支配的恐惧+_+
题意
给定两个整数 (N) 和 (D),如果 (N) 是一个质数,并且将 (N) 转化为 (D) 进制表示后,再进行反转,得到的新数字转化为十进制表示后如果也是一个质数,则称 (N) 在 (D) 进制系统中,是一个可逆质数。
例如,(N = 73,D = 10),则 (73) 是质数,其十进制表示反转后为 (37) 也是质数,所以 (73) 在十进制系统中是一个可逆质数。
(N = 23,D = 2),则 (23) 是质数,其二进制表示为 (10111),反转后得到 (11101),转化为十进制后为 (29),这也是一个质数,所以 (23) 在二进制系统中是一个可逆质数。
现在,请你判断所给 (N) 在 (D) 进制系统中是否是一个可逆质数。
int n,r;
bool isprime(int x)
{
if(x<2) return false;
for(int i=2;i*i<=x;i++)
{
if(x % i == 0)
return false;
}
return true;
}
int main()
{
while(cin>>n)
{
if(n<0) break;
cin>>r;
if(!isprime(n))
{
puts("No");
continue;
}
int res=0;
while(n)
{
res=res*r+n%r;
n/=r;
}
if(isprime(res)) puts("Yes");
else puts("No");
}
//system("pause");
return 0;
}