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 }

浙公网安备 33010602011771号