四、請用 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 筆)
詳解
下面是一個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不是一個完美數。