1. 程式人生 > >程式設計找出1000以內的所有完數

程式設計找出1000以內的所有完數

 一個數如果恰好等於它的因子之和,這個數就稱為“完數”(因子不包括它本身)。例如6=1+2+3.  
 找出1000之內的完數程式碼:
#include <stdio.h>
int main()
{
    int i = 0;     
    int arr[100] = { 0 };    //定義一個數組來存放每個數產生的因子
    for (i = 2; i <= 1000; i++)
    {
        int m = 0;
        int k = 0;
        int j = 0;
        int sum = 0;
        for (m = 1
; m < i; m++)//此處不能用<=;完數的因子不能包括它本身 { if (i%m == 0) //找出i除了他本身之外的所有因子 { arr[k] = m; //將找到的因子存放在陣列中 k++; //用k的值來判斷i共有多少個因子 } } for (j = 0; j < k ; j++) //此處不能用<=;因為陣列的下標從0開始,並且存放因子的時候也是a[0]開始存的 { sum
= arr[j] + sum; //用sum來表示它的因子相加的和 } if (sum == i) //如果因子之和等於i,則將i打印出來. { printf("%d\n",i); } } return 0; }