d进制下的逆转质数 需要求出逆转后d进制下的值 想了好久
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n;
bool isprime(int n)
{
int sqr = (int)sqrt(n * 1.0);
if(n == 1) return false;
for(int i = 2; i <= sqr; i++)
{
if(n % i == 0) return false;
}
return true;
}
int main()
{
int d;
while(scanf("%d",&n) != 'EOF')
{
int a[40];
int num = 0;
if(n < 0) break;
scanf("%d",&d);
if(!isprime(n)){
printf("No\n");
}
else
{
do{
a[num++] = n % d;
n /= d;
}while(n != 0);
int s = 0;
for(int i = 0; i < num; i++)
{
s = s * d + a[i];
}
if(isprime(s)) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}
本文介绍了一种算法,用于判断一个数在d进制下是否为逆转质数。通过将数字转换为d进制并逆序,再判断逆序后的数是否为质数,实现了对逆转质数的有效检测。
1760

被折叠的 条评论
为什么被折叠?



