什么是完數?
如果一個數等於它的因子之和,則稱該數為“完數”(或“完全數”)。
例如,6的因子為1、2、3,而 6=1+2+3,因此6是“完數”。
問題分析
根據完數的定義,解決本題的關鍵是計算出所選取的整數m(m的取值范圍不固定)的因子(因子就是所有可以整除這個數的數),將各因子累加到變量sum (記錄所有因子之和),若sum等於m,則可確認m為完數,反之則不是完數。
代碼:
#include <stdio.h> int fun(int n)//判斷n是否為完數,如果是,則返回1,否則返回0. { int i, sum = 0; for (i = 1; i < n; i++)//遍歷小於n的整數。 if (n % i == 0)//可以整除,為真因子。 sum += i;//累加每個真因子到sum上。 if (sum == n) return 1; //符合完數條件,返回1。 else return 0;//不是完數,返回0。 } int main() { int m; for (m = 1; m < 1000; m++) { if (fun(m)==1) printf("%d\n", m); } }