用C语言编写输入两个正整数m和n,输出m到n之间的所有完数,如果不存在完数,则输出-1
时间: 2024-11-03 19:24:19 浏览: 7
查找1到n的完数(c语言版)
4星 · 用户满意度95%
在C语言中,完数(Perfect Number)是指一个数的所有真因数(除了它自身以外的因数)之和等于这个数本身的自然数。下面是一个简单的程序,可以接收用户输入的两个正整数`m`和`n`,遍历并检查每个数是否为完数:
```c
#include <stdio.h>
#include <stdbool.h>
// 函数定义,用于计算给定数字的因数之和
int sum_of_divisors(int num) {
int i = 1, sum = 0;
for (i = 1; i <= num / i; i++) {
if (num % i == 0)
sum += i;
}
return sum;
}
int main() {
int m, n, i, perfect_num = -1;
printf("请输入起始范围(m): ");
scanf("%d", &m);
printf("请输入结束范围(n): ");
scanf("%d", &n);
// 检查从m到n的每个数
for (i = m; i <= n; ++i) {
if (sum_of_divisors(i) == i) {
perfect_num = i; // 找到完数就更新perfect_num
break; // 只需要找到第一个即可停止循环
}
}
// 输出结果
if (perfect_num != -1)
printf("在%d到%d之间,存在完数:%d\n", m, n, perfect_num);
else
printf("在%d到%d之间,不存在完数。\n", m, n);
return 0;
}
```
阅读全文