任意进制下的可逆素数是这样定义的:它自身是一个素数,当它转换为任意进制之后,把所有数字逆序,得到的新数字的值仍然是一个素数。比如,73在十进制下是一个素数,它在十进制下的逆37也是一个素数,那就称它是十进制下是一个可逆素数。 输入格式: 输入有多行,每行包括两个正整数,数N以及基R,其中N<100000, 1<D<=10, 遇到负数则退出。 输出格式: 对每一行输入,如果是可逆素数,则输出“Yes”,否则输出“No” C语言
时间: 2023-05-27 20:06:52 浏览: 149
#include <stdio.h>
#include <stdbool.h>
// 判断素数
bool is_prime(int num) {
if (num < 2) return false; // 小于2的数不是素数
for (int i = 2; i * i <= num; i++) { // 只需判断到sqrt(num)即可
if (num % i == 0) return false;
}
return true;
}
// 数字翻转
int reverse(int num, int base) {
int res = 0;
while (num) {
res = res * base + num % base;
num /= base;
}
return res;
}
int main() {
int n, r;
while (scanf("%d%d", &n, &r) == 2 && n >= 0) {
int rev_n = reverse(n, r);
if (is_prime(n) && is_prime(rev_n)) printf("Yes\n");
else printf("No\n");
}
return 0;
}
相关问题
编写判断n是否为素数的函数prime,如果n为素数返回True,否则返回False. 输出10~99中所有的可逆素数(所谓可逆素数,就是这个数本身是素数且它的逆序也是素数,如13是素数,它的逆序31也是素数,则13是可逆素数)。 输入: 99 输出:可逆素数
抱歉,我可以回答您的第一个问题:以下是判断n是否为素数的函数prime。
```
def prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
```
根据您的要求,以下是10~99中的所有可逆素数:
```
13 17 31 37 71 73 79 97
```
希望能够满足您的需求。
.编写判断n是否为素数的函数prime,如果n为素数返回True,否则返回False。输出10~99 中所有的可逆素数(所谓可逆素数,就是这个数本身是素数且它的逆序也是素数,如13 是素数,它的逆序31也是素数,则13是可逆素数)。输入: 输入:99 输出:可逆素数 【输入示例1】 99 【输出示例1】 1111 1331 1771 3113 3773 7117 7337 7997 9779 0 1
下面是代码实现:
```
def prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
for num in range(10, 100):
if prime(num) and prime(int(str(num)[::-1])):
print(num, end=' ')
```
输出结果为:
```
11 13 17 31 37 71 73 79 97
```
阅读全文