黑马程序员技术交流社区

标题: 习题求解 [打印本页]

作者: 人生充满期待    时间: 2015-4-20 23:54
标题: 习题求解
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3. 编程找出999以内的所有完数。
作者: xiniuniu    时间: 2015-4-21 08:27
思路, 列出1+2 , 1+2+3, 1+2+3+4, 判断结果只要小于999的都是
作者: 仰望的繁华    时间: 2015-4-21 10:19
xiniuniu 发表于 2015-4-21 08:27
思路, 列出1+2 , 1+2+3, 1+2+3+4, 判断结果只要小于999的都是

1+2+3+4+...,不只是他们的和要在1000以内,这个1000以内的和还应该是它们的最小公倍数。
因为完数是 该数所有约数的和。所以它自然是所有约数的最小公倍数。
例如:1+2+3+4+5=15,4却不是15的约数。

所以思考这觉得:
方案1:遍历1 - 1000,求当前i的约数和是否等于i;
方案2:求1+2+3+...,直到和超出1000,然后和对累加项取余全为0;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2