使用工具:
Dev-c++ 5.11
解题思路:
该数最小为2,不超过1000;我们可以写个双循环,外层循环表示可能存在的完数的集合,内层循环表示可能存在的因子的集合,且因子最大也只能是完数的一半;在内层循环中 ,代码应当实现如果一个数(外层的)和另一个数(内层的)取余数恒为零,就记录下另一个数的累加。当退出内层循环时,判断累加的数的大小是否等于外层循环的数,即可得出完数。
参考代码:
#include<stdio.h>
int main()
{
int num,yz,sum;
for(num=2;num<1000;num++)
{
sum=1;
for(yz=2;yz<=num/2;yz++)
{
if(num%yz==0)
{
sum+=yz;
}
}
if(sum==num)
{
printf("%d 的因数有1,",num);
for(yz=2;yz<=num/2;yz++)
{
if(num%yz==0)
{
printf("%d, ",yz);
}
}
printf("\n");
}
}
return 0;
}
运行结果: