黑马程序员技术交流社区

标题: 请问这道题我这样做对不对?然后有没有更好的解题方案... [打印本页]

作者: 1413157322    时间: 2016-11-18 23:01
标题: 请问这道题我这样做对不对?然后有没有更好的解题方案...
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
我的做法:
[AppleScript] 纯文本查看 复制代码
for (int i = 1; i <= 1000; i++) {
                        int a = i;                                                        //因式分解的数
                        int sum = 1;                                                //因式分解的数之和
                        for (int j = 2; j <= a; j++) {                //循环分解
                                if (a % j == 0) {
                                        a /= j;
                                        sum += j ;
                                        j = 2;
                                       
                                }
                        }
                        if (i == sum) {                                                //判断是否为“完数”
                                System.out.println(i);
                        }
                }



作者: 远在远方    时间: 2016-11-19 00:04
因子最大也就i/2,可以提高一点效率





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