阿摩線上測驗 登入

申論題資訊

試卷:99年 - 四等資訊處理_程式設計概要#12246
科目:程式設計
年份: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 分)

詳解 (共 3 筆)

詳解 提供者:Angus Yang
#include
using namespace std;

int main()
{
int cnt,cx,cb ;




cnt = 60000 ;
cx = 0 ;
cb = 1 ;
while(cb < cnt)
{
if(cnt%cb==0)
{
printf("cx = %d\n",cx) ;
cx = cx + cb;
}


cb = cb + 1 ;
}
printf("cnt = %d\n",cnt) ;
printf("cb = %d\n",cb) ;
system("PAUSE");

/* tem("PAUSE") ; */
return(0);

}

詳解 提供者:Joshua Chen
詳解 提供者:hchungw

isPerfect函式。這個函式會接受一個整數x作為輸入,然後檢查這個數是否為完美數。完美數的定義是它的所有真因數(即除了自身外的因數)之和等於它本身。例如,6的真因數是1、2和3,且1+2+3=6,所以6是一個完美數。
以下是isPerfect函式的C語言實現:

#include <stdio.h>
// 函式原型宣告
int isPerfect(int x);
int main() {
    int number;
    printf("Enter a number to check if it's a perfect number: ");
    scanf("%d", &number);
    if (isPerfect(number)) {
        printf("%d is a perfect number.\n", number);
    } else {
        printf("%d is not a perfect number.\n", number);
    }
    return 0;
}
// 檢查一個數字是否為完美數的函式
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;
    }
}
在這個實現中,isPerfect函式首先初始化一個叫做sum的變數來存儲因數的總和。然後,它通過一個循環遍歷所有小於或等於x/2的數字(因為一個數字的真因數不會大於它的一半)。如果某個數字是x的因數,即x除以這個數字的餘數為0,則將這個因數加到sum上。最後,如果sum等於x,且x不為0,則函式返回1,表示x是一個完美數;否則,返回0,表示它不是一個完美數。