黑马程序员技术交流社区

标题: 打印出10000以内所有的完数 [打印本页]

作者: 往事如风555    时间: 2015-10-17 23:38
标题: 打印出10000以内所有的完数
//题目:一个数如果恰好等于它的因子(包括1,不包括本身)之和,这个数就称为"完数"。
//例如6是一个完数,因为6=1+2+3.编程找出10000以内的所有完数。
public class Demo3 {
        public static void main(String[] args) {
                for (int i = 1; i <= 10000; i++) {
                        if (isWanShu(i)) {                //如果是完数,就打印
                                System.out.println(i);
                        }
                }
        }
        // 以下是判断给定整数是否是完数的方法,如果是,返回true,不是则返回false。       
        private static boolean isWanShu(int n) {
                boolean flag = false;
                int sum = 0;
                for (int i = 1; i <= n / 2; i++) {
                        if (n % i == 0) {
                                sum += i;        // 各因子累加
                        }
                }
                if (sum == n) {                // 判断累加结果是否等于该数本身
                        flag = true;
                }
                return flag;
        }
}

作者: zhy阿狸    时间: 2015-10-18 09:43
你确定对吗?
作者: 往事如风555    时间: 2015-10-18 21:07
zhy阿狸 发表于 2015-10-18 09:43
你确定对吗?

应该是对的啊,总共是四个。 你发现哪里逻辑有问题吗?
作者: 吾要娶她    时间: 2015-10-18 22:11
小伙子你是0908的吧




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