阿摩線上測驗 登入

申論題資訊

試卷:99年 - 099年地方四等_資訊處理#31651
科目:程式設計
年份:99年
排序:0

申論題內容

四、請用 C 語言設計一個函式 int isPerfect(int x)。當 isPerfect 回傳 1 時,代表 x 為「完 美數」,若回傳 0,代表 x 不是完美數。若 x 是一個完美數,則 x 的所有小於 x 本 身的正因數加總,會等於 x。舉例而言,令 x=6,則所有小於 x 的正因數有 1,2 及 3。因為 1+2+3=6,所以 6 是完美數。(15 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

下面是一個C語言函數isPerfect的實現,該函數檢查一個整數x是否是完美數:

 

#include <stdio.h>

 

int isPerfect(int x) {

    int sum = 0;

   

    // 找出所有小於x的因數並計算它們的和

    for (int i = 1; i <= x / 2; i++) {

        if (x % i == 0) {

            sum += i;

        }

    }

   

    // 如果因數和等於x,則x是完美數

    if (sum == x && x != 0)

        return 1;

    else

        return 0;

}

 

int main() {

    int number = 6;

    if (isPerfect(number))

        printf("%d is a perfect number.\n", number);

    else

        printf("%d is not a perfect number.\n", number);

       

    return 0;

}

在這個函數中,我們通過一個迴圈找出x的所有因數(除了x本身),然後計算這些因數的和。如果這個和等於x,並且x不為0(因為0不是完美數),則函數返回1,表示x是一個完美數。否則,返回0,表示x不是一個完美數。