C语言循环求完全数并输出其本身和其因数
时间: 2024-11-03 13:19:19 浏览: 34
在C语言中,一个完全数是指它的所有真因子(除了它本身以外的正因数)加起来正好等于该数本身的整数。下面是一个简单的程序示例,用于寻找并输出指定范围内的第一个完全数,同时也列出它的所有因数:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_factor(int num, int i) {
return (num % i == 0);
}
int sum_factors(int num) {
int sum = 0;
for (int i = 1; i <= num / 2; ++i) {
if (is_factor(num, i)) {
sum += i;
}
}
// 因为我们已经计算了除自身之外的所有因子,所以直接返回sum即可
return sum;
}
void find_and_print_first_complete_number(int start, int end) {
for (int num = start; num <= end; ++num) {
if (sum_factors(num) == num) {
printf("Number: %d\n", num);
printf("Factors: ");
for (int i = 1; i <= num; ++i) {
if (is_factor(num, i)) {
printf("%d ", i);
}
}
printf("\n");
break; // 找到第一个完全数就退出循环
}
}
}
int main() {
int range_start = 100; // 可以修改查找范围
int range_end = 500; // 可以修改查找范围
find_and_print_first_complete_number(range_start, range_end);
return 0;
}
```
这个程序首先定义两个辅助函数`is_factor()`检查是否是某个数的因数,以及`sum_factors()`计算给定数的因子之和。然后`find_and_print_first_complete_number()`函数遍历指定范围内寻找并打印第一个完全数及其因数。
注意:由于完全数相对较少,尤其是较大的完全数很难找到,所以在实际应用中,搜索范围可能需要适当调整以提高效率。例如,上面代码查找的是100到500之间的完整数。
阅读全文