某个数是某个系统d的reversible primes需要满足,这个数本身是素数,且这个数转换成d进制后倒转过来再转化成10进制后的数仍然是素数。
题意难懂但懂了就好做。
下面的代码的巧妙之处在于reverse_with_radix取得的余数的顺序就刚好是换成d进制后倒转得到的顺序。
需要注意的点:0和1不是素数。
#include<cstdio>
bool isprime(int a) {
if (a <= 1) return false;
for (int i = 2; i * i <= a; i++) {
if (a % i == 0) return false;
}
return true;
}
int reverse_with_radix(int a, int r) {
int total = 0, t;
while (a != 0) {
t = a % r;
total = total * r + t;
a = a / r;
}
return total;
}
int main() {
int n, d;
while (scanf("%d", &n)) {
if (n < 0) return 0;
scanf("%d", &d);
if (isprime(n) && isprime(reverse_with_radix(n, d))) printf("Yes\n");
else printf("No\n");
}
}

探讨了在d进制下可逆素数的概念及其实现算法,这种素数不仅自身为素数,在d进制下反转后仍保持素数特性。文章提供了C++代码示例,展示了如何通过reverse_with_radix函数实现数的进制转换和反转。
255

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



