第一次:
#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");
}
}
}