C语言素数是指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。如果一个素数是完美的素数,当且仅当它的每一位数字之利 也是一个素数。如29,本身是素数,而且2+9=11也是素数,所以它是充美素数。求(1,n)范围内完美素数的个数。
时间: 2024-02-19 17:58:35 浏览: 128
C 语言求素数
以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断一个数是否为素数
bool is_prime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
// 判断一个数是否为完美素数
bool is_perfect_prime(int num) {
if (!is_prime(num)) {
return false;
}
int digit_sum = 0;
while (num > 0) {
digit_sum += num % 10;
num /= 10;
}
return is_prime(digit_sum);
}
// 计算 (1, n) 范围内完美素数的个数
int count_perfect_primes(int n) {
int count = 0;
for (int num = 2; num < n; num++) {
if (is_perfect_prime(num)) {
count++;
}
}
return count;
}
int main() {
int n;
printf("请输入 n 的值:");
scanf("%d", &n);
int count = count_perfect_primes(n);
printf("(1, %d)范围内完美素数的个数为:%d\n", n, count);
return 0;
}
```
其中,`is_prime` 函数用于判断一个数是否为素数,`is_perfect_prime` 函数用于判断一个数是否为完美素数,`count_perfect_primes` 函数则是主函数,用于计算 (1, n) 范围内完美素数的个数。
阅读全文