A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 人生充满期待 中级黑马   /  2015-4-20 23:54  /  1161 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3. 编程找出999以内的所有完数。

2 个回复

倒序浏览
思路, 列出1+2 , 1+2+3, 1+2+3+4, 判断结果只要小于999的都是
回复 使用道具 举报
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;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马