C语言编写程序求出 100~999 之间的无暇素数。所谓无暇素数是指本身为素数,其逆序数也是素数的数。要求编写三 个函数,分别用来求逆序数和判定素数和所有无暇素数之和,在主函数中输出和的结果。例如: 113 是一个素数,311 也是一个素数,113 就是无暇素数
时间: 2024-05-14 20:16:31 浏览: 123
以下是使用 C 语言编写的程序,实现求解 100~999 之间的无暇素数以及它们的和:
```
#include <stdio.h>
// 判断一个数是否为素数
int is_prime(int num) {
if (num == 2 || num == 3) {
return 1;
}
if (num == 1 || num % 2 == 0) {
return 0;
}
for (int i = 3; i * i <= num; i += 2) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
// 求一个数的逆序数
int reverse_num(int num) {
int res = 0;
while (num > 0) {
res = res * 10 + num % 10;
num /= 10;
}
return res;
}
// 计算无暇素数之和
int sum_of_immaculate_primes() {
int sum = 0;
for (int i = 100; i <= 999; ++i) {
if (is_prime(i) && is_prime(reverse_num(i))) {
sum += i;
}
}
return sum;
}
int main() {
int sum = sum_of_immaculate_primes();
printf("Sum of immaculate primes is: %d\n", sum);
return 0;
}
```
程序中定义了三个函数,分别用于判断一个数是否为素数、求一个数的逆序数以及计算无暇素数之和。在 `main` 函数中,调用 `sum_of_immaculate_primes` 函数计算无暇素数之和,最后输出结果。
阅读全文