【问题描述】在主程序中输入n,判断该数是否为完数。所谓完数(perfect number),是特殊的自然数,它所有的真因子(除了自身以外的约数)的和恰好等于它本身。如6=1+2+3,是完数。要求定义一个函数,用来判别某个整数是否为完数,是返回1,否则返回0。最后在主程序中测试该函数。
时间: 2024-03-16 12:46:00 浏览: 155
好的,我可以帮你解决这个问题。你可以参考下面的代码实现:
```c
#include <stdio.h>
int isPerfectNumber(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) { // 如果i是n的约数
sum += i; // 累加i
}
}
if (sum == n) { // 如果所有真因子的和等于n本身
return 1; // 返回1,表示是完数
} else {
return 0; // 返回0,表示不是完数
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
if (isPerfectNumber(n)) {
printf("%d是完数\n", n);
} else {
printf("%d不是完数\n", n);
}
return 0;
}
```
在上面的代码中,我们首先定义了一个`isPerfectNumber()`函数,用于判断一个整数是否为完数。该函数接受一个整数参数n,然后使用一个循环来计算n的所有真因子的和,并将其存储在变量sum中。最后,如果sum等于n,则返回1,表示n是完数;否则返回0,表示n不是完数。
在主程序中,我们首先读入一个整数n,然后调用`isPerfectNumber()`函数来判断n是否为完数,并根据返回值输出相应的结果。
希望这个代码可以帮助到你!
阅读全文