完数(Perfect Number)是指一个数恰好等于它的所有因子(除去自身)之和。例如,6 是一个完数,因为 6 的因子有 1、2、3,而 1 + 2 + 3 = 6。
以下是一个示例程序,用于找出 1000 以内的所有完数
在判断一个数是否为完数时,可以遍历从 1 到这个数的一半(即 num/2
)之间的所有数字,而不需要遍历到这个数本身。这是因为一个数 num
的因子(除去自身)最大也只可能是 num/2
。
#include <stdio.h>
int is_perfect_number(int num) {
int sum = 0;
for (int i = 1; i <= num / 2; i++) {
if (num % i == 0) {//判断i是否为num的因子如果是则累加到sum里面
sum += i;
}
}if(sum==num)
{
return 1;
}else{
return 0;
}
}
int main() {
printf("1000 以内的所有完数:\n");
for (int i = 1; i <= 1000; i++) {
if (is_perfect_number(i)) {
printf("%d\n", i);
}
}
return 0;
}
输出结果: