#include <stdio.h>
#define NUM 10000
/* 完数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
* 问题:求10000以内的所有完数 */
//求完数
void f(int x);
int main()
{
for (int i=1;i<NUM;i++)
{
f(i);
}
return 0;
}
void f(int x)
{
int arr[100];
int k = 0,sum = 0;
for (int i=1;i<=x/2;i++) // x/2可提高运算速率
{
if(x%i == 0)
{
arr[k++] = i;
sum += i;
}//分解因数
}
if (sum == x)
{
printf("%d = ",x);
for (int j=0;j<k;j++)
{
printf("%8d",arr[j]);
}
puts("\n");
}
}