绝对素数是指本身是素数,其逆序数也是素数的数。例如:107与701是绝对素数,求出[m,n]范围之内的所有绝对素数。
输入形式,输入两个正整数m和n,其中m
以下是一个 C 语言代码示例,用于求解给定范围内的所有绝对素数:
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
/* 判断一个数是否为素数 */
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int reverse_num(int n) {
/* 将一个数的数字倒序 */
int reversed = 0;
while (n > 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
return reversed;
}
bool is_absolute_prime(int n) {
/* 判断一个数是否为绝对素数 */
if (is_prime(n) && is_prime(reverse_num(n))) {
return true;
} else {
return false;
}
}
void find_absolute_primes(int m, int n, int *absolute_primes, int *count) {
/* 在[m,n]范围内查找所有的绝对素数 */
for (int i = m; i <= n; i++) {
if (is_absolute_prime(i)) {
absolute_primes[*count] = i;
(*count)++;
}
}
}
int main() {
int m = 1;
int n = 1000;
int absolute_primes[1000];
int count = 0;
find_absolute_primes(m, n, absolute_primes, &count);
for (int i = 0; i < count; i++) {
printf("%d ", absolute_primes[i]);
}
return 0;
}
上面代码你尝试一下