本文主要是介绍C语言经典例19-完数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 1 题目
- 2 分析
- 3 实现
- 4 运行结果
1 题目
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
因子:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子
2 分析
本题想要验证某个数,必须计算它的因子,计算因子的方法见 C语言经典例14-将一个正整数分解质因数 ,计算出因子后,在求和判断即可
3 实现
#include <stdio.h>int main() {int a[100]; // 临时数组用于保存因子for (int i = 2; i <= 1000; i++) {int sum = 1; // 1是所有数的因子,直接保存a[0] = 1;int k = 0; // k用于保存数组中储存了多少因子,用于最后输出for (int j = 2; j <= (i/2); j++) { // 分解因子if (i % j == 0) { // 若能整除则j为因子之一sum += j; // 累加因子到总和a[++k] = j; // 将因子保存到数组中,移动数组标号}}if (i == sum) { // 判断该数的因子的和是否等于该数printf("%d = %d", i, a[0]); // 输出计算式for (int n = 1; n <= k; n++) {printf(" + %d", a[n]);}printf("\n");} }return 0;
}
4 运行结果
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
这篇关于C语言经典例19-完数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!