一个数如果恰好等于它的因子之和,这个数就被称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。找出1000之内的所有完数,并输出其因子
时间: 2024-11-05 16:32:59 浏览: 11
在C语言中,我们可以编写一个函数来检查一个数是否为完数,同时记录并输出它的因子。这里有一个简单的例子:
```c
#include <stdio.h>
#include <stdbool.h> // 引入bool类型
// 计算给定数的因子
void findFactors(int num, int* factors) {
for (int i = 1; i <= num; ++i) {
if (num % i == 0) {
factors[num]++; // 统计因子次数
printf("%d ", i); // 输出因子
}
}
}
// 检查一个数是否是完数并输出因子
bool isPerfect(int num, int* factorSum) {
int sum = 0;
*factorSum = 0;
for (int i = 1; i <= num; ++i) {
if (num % i == 0) {
sum += i;
(*factorSum)++;
}
}
return sum == num && (*factorSum > 1); // 完数需要大于1个因子
}
int main() {
for (int i = 1; i <= 1000; ++i) {
bool isPerfectNum = isPerfect(i, &factorSum);
if (isPerfectNum) {
printf("Number %d is a perfect number with factors: ", i);
findFactors(i, &factors[i]);
printf("\n");
}
}
return 0;
}
```
在这个程序中,`findFactors` 函数负责计算并输出因子,`isPerfect` 函数负责判断一个数是否是完数。注意,为了记录每个数的因子,这里使用了一个额外的数组 `factors`。
阅读全文