第一次:

#include

void main()

{

int m,n,sum=0;

//int a[10];

for(m=1;m<100;m++)

{

for(n=1;n

{

if(m%n==0)

{

sum=sum+n;

//i++;

}

}

  if(sum==m)

  {

      printf("%d its factors are\n",m);

  }

}

}

这次犯的错误是每次寻找完数之前,sum没有清零。

第二次:


#include

void main()

{

int m,n,sum=0,i;

   int a[100];

for(m=1;m<100;m++)

{

sum=0;

for(n=1;n

{

if(m%n==0)

{

sum=sum+n;

a[i]=n;

i++;

}

}

  if(sum==m)

  {

  for(;i>=0;i--)

      printf("%d its factors are %d\n",m,a[i]);

  }

}

}

要求输出格式是:m its factors are 1,2,3

我所犯的错误是把 its factors are 放进循环体里了,另外循环也不对,应该从小到大输出因子,我这样循环输出的不是m的因子是一些不确定的数字。

第三次:

#include

void main()

{

int m,n,sum=0,j,i;

int a[100];

for(m=1;m<1001;m++)

{

sum=0;

i=0;

for(n=1;n

{

if(m%n==0)

{

sum=sum+n;

a[i]=n;

i++;

}

}

  if(sum==m)

  {  

      printf("%d its factors are:",m);

  for(j=0;j

  printf("%3d,",a[j]);

  printf("\n");

  }

}

}