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


 1 public Class Test{
 2   /**
 3     * 恒生2020春招开发笔试题(编程题):
 4      * 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.
 5      * 编程出1000以内的所有完数。
 6      * 思路:寻找其所有的因数
 7     * @params: [num] 输入的数字范围
 8     * @return: java.util.Set<java.lang.Integer> 返回1000以内的所有完数。
 9     */
10     public static Set<Integer> perfectNumber(int num){
11         int currentNum = 0;//当前拆分的数字
12         Set<Integer> perfectNumber = new HashSet<>();
13         if (num <=1) {
14             return perfectNumber;
15         }
16         for (int j = 2 ; j <= num ; j++){//1000之内的数字
17             currentNum = j;//用于拆分
18             Set<Integer> factors = new HashSet<>();//数字的全部因子
19             factors.add(1);//1是每个数字都会有的因子
20             //每个数字因子拆分
21             System.out.println();
22             System.out.println("currentNum = " + currentNum);
23             for (int i = 2; i <= j ; i++){
24                 //因子拆分
25                 System.out.print("i = "+ i + "/");
26                 if (currentNum % i == 0){
27                     factors.add(i);//因子
28                     factors.add(j/currentNum);//拆分的搭配因子
29                 }
30             }
31             //排除自身因子
32             factors.remove(j);
33             //统计因子和
34             int sum = 0;
35             for (Integer factor : factors) {
36                 sum += factor;
37             }
38             System.out.println();
39             System.out.println("sum = " + sum);
40             Object[] objects = factors.toArray();
41             Arrays.sort(objects);//数组排序
42             System.out.println(Arrays.toString(objects));
43             //判断是否为完数
44             if (sum == j){
45                 perfectNumber.add(j);
46             }
47         }
48         return perfectNumber;
49     }
50       public static void main(String[] args) {
51         Set<Integer> set = perfectNumber(1000);
52         System.out.println();
53         Object[] objects = set.toArray();
54         Arrays.sort(objects);
55         System.out.println("完数:" + Arrays.toString(objects));//完数:[6, 28, 496]
56     }    
57 }

 

修改了部分判断逻辑,已经校准。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 【JAVA习题八】一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。 题目:如果一个数恰好等于它的因子之和,这个数就称为“完数”。例如:6=1+2+3,请找出1000以内的所有的完数。 【Python3练习题 014】 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。 一个数如果恰好等于它的因子之和,这个数就称为“完数”例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子: 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子 一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子 一个数如果恰好等于它的因子之和,这个数就称为 "完数 " 如果一个数恰好等于它的所有因子(因子就是所有可以被这个数整除的数,包括1,但不包括自身)之和,则称该数为一个“完数”。(例如:6的因子为1,2,3,且1+2+3=6,因此6是一个“完数”。)计算并输出1000以内的所有完数。
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM