c語言學習記錄--求出1000以內所有完數,並輸出其因子

第一次:

#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");

  }

}

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章