输出任意两个数之间的完数
时间: 2024-09-23 22:13:47 浏览: 85
T_6_完数判断_
完数(Perfect Number)是指一个正整数除了本身以外,其所有真因数(即除了它自身以外的因子)的和恰好等于该数自身的数学概念。例如,6是一个完数,因为它的因数有1, 2, 3,它们的和是6。
要编写一个程序输出任意两个数之间的完数,你可以使用一个循环遍历这两个数范围内的每个数,然后检查每个数是否为完数。以下是一个简单的C语言函数,用于判断一个数是否是完数:
```c
#include <stdio.h>
int is_perfect(int num) {
int sum = 0;
for (int i = 1; i * i <= num; i++) { // 只需检查到sqrt(num),避免重复计算
if (num % i == 0) {
if (i * i != num)
sum += i + num / i; // 如果不是本身的平方,则添加两个因子
else
sum += i; // 否则(本身就是平方),只添加一个因子
}
}
return sum == num; // 返回和是否等于原数
}
void find_perfect_numbers_in_range(int start, int end) {
for (int i = start; i <= end; i++) {
if (is_perfect(i)) {
printf("%d 是一个完数。\n", i);
}
}
}
// 主函数调用
int main() {
int start_num, end_num;
printf("请输入起始和结束数字:\n");
scanf("%d %d", &start_num, &end_num);
if (start_num > end_num) {
printf("错误:开始数字必须小于或等于结束数字。\n");
return 1;
}
printf("在%d到%d之间的完数有:\n", start_num, end_num);
find_perfect_numbers_in_range(start_num, end_num);
return 0;
}
```
在这个程序中,`is_perfect()` 函数检查一个数是否为完数,而 `find_perfect_numbers_in_range()` 则用于查找指定范围内的完数并打印出来。
阅读全文