一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6=1+2+3,用C语言编程找出1000以内的所有完数。
时间: 2025-01-26 20:11:01 浏览: 21
在C语言中,找到1000以内的所有完数可以采用循环遍历的方式,对每个数检查其所有因子之和是否等于它本身。下面是一个简单的程序实现:
#include <stdio.h>
// 辅助函数用于找出一个数的所有因子
void find_factors(int num, int factors[]) {
for (int i = 1; i <= num / i; i++) {
if (num % i == 0) {
factors[i]++; // 统计因子
if (i != num / i) { // 如果不是自身,也统计另一个因子
factors[num / i]++;
}
}
}
}
// 主函数,寻找1000以内的完数
int find_perfect_numbers(int upper_limit) {
for (int i = 2; i <= upper_limit; i++) {
int factors[upper_limit + 1]; // 存储因子,防止溢出
memset(factors, 0, sizeof(factors)); // 初始化为0
find_factors(i, factors);
if (factors[i] == i) { // 如果因子之和等于当前数,就是完数
printf("%d 是一个完数,因为它的因子之和是 %d\n", i, factors[i]);
}
}
return 0;
}
int main() {
int limit = 1000;
find_perfect_numbers(limit);
return 0;
}
相关推荐

















