第一次:
#include<stdio.h>
void main()
{
int m,n,sum=0;
//int a[10];
for(m=1;m<100;m++)
{
for(n=1;n<m;n++)
{
if(m%n==0)
{
sum=sum+n;
//i++;
}
}
if(sum==m)
{
printf("%d its factors are\n",m);
}
}
}
这次犯的错误是每次寻找完数之前,sum没有清零。
第二次:
#include<stdio.h>
void main()
{
int m,n,sum=0,i;
int a[100];
for(m=1;m<100;m++)
{
sum=0;
for(n=1;n<m;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<stdio.h>
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<m;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<i;j++)
printf("%3d,",a[j]);
printf("\n");
}
}
}