Java基础题(3)

题目:

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

题目分析:
1,求出每一个数的因子
2,每个因子求和,和他本身的数作比较
3比较相等,记录数据,失败则跳过
4..i++重复上面三个步骤

代码:
 1 import java.util.ArrayList;
 2 
 3     public static void main(String[] args) {
 4         ArrayList<Integer> list = new ArrayList<>();
 5         for (int i = 1; i < 1001; i++) {
 6             if (same(i, sum(yinShu(i))))
 7                 list.add(i);
 8             else continue;
 9         }
10         for (int i = 0; i < list.size(); i++) {
11             System.out.println(list.get(i));
12         }
13     }
14 
15     public static boolean same(int num, int sum) {
16         if (num == sum)
17             return true;
18         else
19             return false;
20     }
21 
22     //将每一个因子的数列进行求和返回总值
23     public static int sum(ArrayList<Integer> list) {
24         int sum = 0;
25         for (int i = 0; i < list.size(); i++) {
26             sum += list.get(i);
27         }
28         return sum;
29     }
30 
31 //录入一个数,将该数的所有因子以集合的形式输出
32     public static ArrayList<Integer> yinShu(int n) {
33         ArrayList<Integer> list = new ArrayList<>();
34         if (n == 1)
35             list.add(1);
36         for (int i = 1; i < n; i++) {
37             if (n % i == 0) {
38                 list.add(i);
39             }
40         }
41         return list;
42     }

 

posted @ 2019-04-06 21:08  Neorou  阅读(100)  评论(0)    收藏  举报