题目: 一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数
#include<stdio.h>
int main()
{
int i,sum,j;
printf("perfect number:");
for(i = 2 ;i < 1000;i++)
{
sum = 0;
for(j = 1;j < i;j++)//运用辗除法计算它的因子。
{
if(i % j == 0)
{
sum += j;//将他的因子加起来
}
}
if(i == sum)//判断它的因子是否和自己相等,相等则输出。
{
printf("%-4d",i);
}
}
printf("\n");
return 0;
}
总结:这题主要的难点是辗除法,有很多人不知道怎么运用。其实本质就是一个数能除一个数,则被除数就从0重新开始除。然后只要能有一个被除数能除尽就把它用另一个变量加起来,最后让这个变量和本身作比较就可以了。不过一定要注意,每一次计算完一个数的因子以后都要把用来加因子的变量置0.