首先说明一下题意,就是输入一个数,然后判断它是不是素数,如果是,将它进行进制转换,转换后得到的数再次进行素数判断,如果是素数。就输出Yes,否则输出No
#include<cmath>
#include<cstdio>
bool isPrime(int n)//判断素数,特别注意n为1的情况,
{
if(n==1)
return false;
for (int i = 2; i < n; i++)
if (n % i == 0 && i < n)
return false;
return true;
}
int d[10000];
int main()
{
int n, radix;//radix为进制
while (scanf("%d",&n) != EOF)
{
if (n < 0)
break;
scanf("%d", &radix);
if (isPrime(n) == false)
{
printf("No\n");
}
else
{
int len = 0;
do//进制转换
{
d[len++] = n % radix;
n /= radix;
} while (n != 0);
for (int i = 0; i < len; i++)
{
n = n * radix + d[i];//按逆序转换进制
}
if (isPrime(n) == true)
printf("Yes\n");
else printf("No\n");
}
}
return 0;
}