c语言求正整数n之内的所有完数及其因子的代码
时间: 2024-03-11 14:48:43 浏览: 196
以下是求解正整数n以内的所有完数及其因子的C语言代码:
```c
#include <stdio.h>
// 计算一个数的所有因子之和
int sum_factors(int num, int factors[]) {
int sum = 0, index = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
factors[index++] = i;
}
}
return sum;
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("%d以内的完数及其因子有:\n", n);
for (int i = 1; i <= n; i++) {
int factors[100] = {0}, sum = sum_factors(i, factors);
if (sum == i) {
printf("%d: ", i);
for (int j = 0; factors[j]; j++) {
printf("%d ", factors[j]);
}
printf("\n");
}
}
return 0;
}
```
在上述代码中,与上一个问题的代码相比,新增了一个数组 `factors`,用于存储一个数的所有因子。同时,修改了 `sum_factors` 函数,将该数的所有因子存储到 `factors` 数组中,并在函数返回值中返回其所有因子之和。在主函数中,遍历 1~n 中的每一个数,调用 `sum_factors` 函数计算其所有因子之和及其所有因子,如果其所有因子之和等于该数本身,则说明该数是完数,将其输出及其所有因子即可。
阅读全文