阿摩線上測驗 登入

申論題資訊

試卷: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<stdio.h>
#include<stdlib.h>
#include<math.h>


int isPerfect(int x)
{
int cnt,cx,cb ;
   
cnt = x ;   

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

cb = cb + 1 ;
}

if(cnt==cb)
{
return(1);
}
else
{
return(0);
}

}

詳解 提供者:Wen-Sen Cheng
int isPerfect(int x)
{
     int sum=0,i;
     if(i=1;i<x;i++) //判斷1~(x-1)
     {
           if(x%i==0) //判斷i是否為x的因數
           {
                 sum=sum+i;
           }
     }
     if(sum==x) return(1) ; //如果和等於x 傳回1,否則傳回0
     else return(0);
}
詳解 提供者:hchungw

在C語言中,要設計一個isPerfect函式來判斷一個數字是否為完美數是相對直接的。完美數的定義是一個正整數,它等於其所有正除數(本身除外)之和。例如,6是一個完美數,因為其正除數1、2和3的和恰好是6。
以下是isPerfect函式的一個實現,該函式接受一個整數x作為輸入,如果x是完美數,則返回1;如果不是,則返回0。
c
Copy code
#include <stdio.h>
// 函式原型宣告
int isPerfect(int x);
int main() {
    int number;
    printf("Enter a 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;
}
// 定義 isPerfect 函式
int isPerfect(int x) {
    int sum = 0;
    // 計算所有小於 x 的正因數之和
    for (int i = 1; i < x; i++) {
        if (x % i == 0) {
            sum += i;
        }
    }
    // 如果該和等於 x,則 x 是完美數
    if (sum == x) {
        return 1;
    } else {
        return 0;
    }
}
在這個實現中,isPerfect函式通過一個for循環迭代1到x-1的所有數字,檢查每個數字是否是x的正除數(即x % i == 0)。如果是,則將該數字加到sum變量上。迭代完成後,如果sum等於x,則x是一個完美數,函式返回1;否則,返回0。