c语言编写程序求出ab之间的无暇素数
时间: 2024-05-12 13:15:22 浏览: 102
以下是利用C语言编写程序求出ab之间的无暇素数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int is_prime(int n) {
if (n < 2) {
return 0;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int is_perfect(int n) {
int sum = 1;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
sum += i;
if (i != n / i) {
sum += n / i;
}
}
}
if (sum == n && n != 1) {
return 1;
}
return 0;
}
int main() {
int a, b;
printf("请输入a和b的值(a<=b):");
scanf("%d%d", &a, &b);
printf("在%d和%d之间的无暇素数有:\n", a, b);
for (int i = a; i <= b; i++) {
if (is_prime(i) && is_perfect(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
代码中,`is_prime`函数用于判断一个数是否为素数,`is_perfect`函数用于判断一个数是否为无暇数。在`main`函数中,输入a和b的值,然后循环从a到b,找出无暇素数并输出。
阅读全文