用c语言解决C. 绝对素数 题目描述 绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。编写一个程序,输入m, 输出不大于m的最大绝对素数, 如不存在则输出no。 输入描述 正整数m 输出描述 输出不大于m的最大绝对素数, 如不存在则输出no 样例输入 60000样例输出 39989
时间: 2024-04-16 19:28:16 浏览: 105
以下使用C语言解决问题的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
bool isAbsolutePrime(int n) {
int reverseNum = 0;
int temp = n;
// 计算逆序数
while (temp > 0) {
reverseNum = reverseNum * 10 + temp % 10;
temp /= 10;
}
// 判断是否为绝对素数
return isPrime(n) && isPrime(reverseNum);
}
int findMaxAbsolutePrime(int m) {
for (int i = m; i >= 2; i--) {
if (isAbsolutePrime(i)) {
return i;
}
}
return -1;
}
int main() {
int m;
// 输入m
scanf("%d", &m);
// 查找不大于m的最大绝对素数并输出结果
int result = findMaxAbsolutePrime(m);
if (result != -1) {
printf("%d\n", result);
} else {
printf("no\n");
}
return 0;
}
```
这段代码中,我们定义了两个辅助函数 `isPrime` 和 `isAbsolutePrime`,分别用于判断一个数是否为素数和绝对素数。然后,我们通过 `findMaxAbsolutePrime` 函数遍历从 m 到 2 的数,找到第一个绝对素数并返回。如果不存在绝对素数,则返回 -1。最后,在 `main` 函数中,我们读取输入 m,调用 `findMaxAbsolutePrime` 函数并输出结果。
阅读全文