【C語言】創建一個函數,判斷某一正整數是否為完數,並調用這個函數找出1000以內所有完數


什么是完數?

如果一個數等於它的因子之和,則稱該數為“完數”(或“完全數”)。

例如,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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM