編程題:一個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。例如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刪除。



猜您在找 一個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3.編程     找出1000以內的所有完數。 java基礎:一個數如果恰好等於它的因子之和,這個數就稱為"完數".例如6=1+2+3.編程找出1000以內的所有完數 一個數如果恰好等於它的因子之和,這個數就稱為“完數。例如6=1+2+3.編程找出1000以內的所有完數。 【JAVA習題八】一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.編程 找出1000以內的所有完數。 一個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3.編程 找出1000以內的所有完數。 python基礎練習題(題目 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如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之內的所有完數,並按下面格式輸出其因子
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM