C语言:一个数如果恰好等于它的因子之和,这个数就称为"完数"。请编写C程序,找出1000之内的所有完数。

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。请编写程序,找出1000之内的所有完数。
每行按格式输出其因子:6=1+2+3
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
求大神解答

按照你的要求编写的求1000以内完数的C语言程序如下

#include<stdio.h>
int a[32],count=0;
int factorSum(int x)
{
 int i,sum=0;
 count=0;
 for(i=1;i<x;i++)
  if(x%i==0){
   a[count]=i;
   sum+=i;
   count++;
  }
 return sum;
}
int main()
{
 int i,j;
 for(i=1;i<=1000;i++)
  if(i==factorSum(i))
  {
   printf("%d=",i);
   for(j=0;j<count;j++){
    if(j==count-1)
     printf("%d",a[j]);
    else
     printf("%d+",a[j]);
   }
   printf("\n");
  }
 return 0;
}

运行结果
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答