任务描述
本关任务:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出1000之内的所有完数。
输入
1000
输出
编程序找出1000之内的所有完数,每个完数占一行。
测试说明
输入
1000
输出
6
28
496
#include <stdio.h>
int main(void)
{
int num, sum, i;
for(num = 1; num <= 1000; num ++) //遍历1-1000
{
sum = 0; //每次判断一个数都要将 sum 初始化为 0
for (i = 1; i < num; i++) //遍历比num小的所有数
{
if (num % i == 0) //num 能被 i 整除(取余后余数为0),说明 i 是 num 的因子
{
sum += i; //累加因子
}
}
if(sum == num)
{
printf("%d", num);
}
}
return 0;
}