C语言实现找出指定范围内的完数个数
时间: 2024-09-12 16:02:06 浏览: 30
在C语言中,完数(Perfect Number)是指该数的所有真因子(除了自身之外的因数)加起来正好等于它本身的数。例如6是一个完数,因为1+2+3=6。要找出给定范围内完数的数量,我们可以编写一个循环遍历每个数字,并检查它的所有真因子之和是否等于原数。
下面是一个简单的示例程序,它会计算并打印出从最小输入值到最大输入值之间的完数个数:
```c
#include <stdio.h>
// 函数用于检查一个数是否是完数
int isPerfect(int num) {
int sum = 1;
for (int i = 2; i * i <= num; i++) { // 只需检查到sqrt(n)
if (num % i == 0) {
sum += i;
if (i != num / i) { // 如果还有其他因子(避免重复)
sum += num / i;
}
}
}
return sum == num;
}
// 主函数
int main() {
int start, end;
printf("请输入范围的开始和结束值: ");
scanf("%d %d", &start, &end);
int perfectCount = 0;
for (int i = start; i <= end; i++) {
if (isPerfect(i)) {
perfectCount++;
printf("%d 是一个完数。\n", i);
}
}
printf("在给定范围内有 %d 个完数。\n", perfectCount);
return 0;
}
```
当你运行这个程序时,你需要输入范围的起始和结束数值,然后程序会统计并显示在这个区间内有多少个完数。