完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
第一个完全数是6 6的因子包括1; 2; 3
第二个完全数是28 28的因子是1; 2; 4; 7; 14
求10000以内的所有完数,并打出每个完全数的因子
要求:将因子分解的过程在函数中完成,在主函数中进行输出
详细实现代码如下,望采纳
#include <stdio.h>
#include <stdlib.h>
// 定义一个函数,用来判断一个数是否为完全数
int is_perfect_number(int n) {
// 定义一个变量,用来保存因子的和
int sum = 0;
// 循环枚举n的因子
for (int i = 1; i < n; i++) {
// 如果i是n的因子,则将它累加到sum中
if (n % i == 0) {
sum += i;
}
}
// 判断sum是否等于n,如果是则返回1,否则返回0
return sum == n;
}
// 主函数
int main(int argc, char* argv[]) {
// 循环枚举1~10000之间的数
for (int i = 1; i <= 10000; i++) {
// 如果i是完全数,则输出它的因子
if (is_perfect_number(i)) {
printf("%d的因子包括:", i);
// 循环枚举i的因子
for (int j = 1; j < i; j++) {
// 如果j是i的因子,则输出j
if (i % j == 0) {
printf("%d ", j);
}
}
// 换行
printf("\n");
}
}
// 程序结束
return 0;
}