一个数如果恰好等于它的因子(不包括它本身)之和,这个数就称为“完数”。例如:6的因子为1、2、3,而6=1+2+3,因此6是“完数”。给定一个数,判断它是否是“完数”。 输入格式: 输入一个正整数n(n<10000)。用c语言
时间: 2024-11-25 17:19:30 浏览: 102
在C语言中,你可以编写一个函数来判断一个正整数n是否是完数。首先,你需要创建一个函数来找出n的所有因子,然后检查这些因子之和是否等于n。以下是简单的实现步骤:
```c
#include <stdio.h>
#include <stdbool.h>
// 函数来找到一个数的所有因子
bool findFactors(int n, int* factors, int i) {
for (int j = 1; j * j <= n; j++) {
if (n % j == 0) {
factors[i++] = j;
if (j != n / j) { // 如果不是质因数的平方,则添加另一个因子
factors[i++] = n / j;
}
}
}
return true;
}
// 主函数判断是否是完数
bool isPerfectNumber(int n) {
int sum = 0, factors[100]; // 假设最多有100个因子
if (findFactors(n, factors, 0)) {
for (int i = 0; i < 2 * sizeof(factors) / sizeof(*factors); i++) {
if (factors[i] == n && sum == n - sum) {
return true; // 当sum等于n减去所有因子之和时,它是完数
} else {
sum += factors[i];
}
}
}
return false;
}
int main() {
int n;
scanf("%d", &n);
printf("%d 是完美数吗?%s\n", n, isPerfectNumber(n) ? "是" : "否");
return 0;
}
```
在这个程序中,`isPerfectNumber`函数会计算并检查输入的数字n是否满足完数的条件。注意,由于完数的因子数量不会超过sqrt(n),所以这里假设最多有100个因子,实际应用中可以根据需要调整数组大小。
阅读全文
相关推荐

















