题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
public class HJ56_完全数计算 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); List<Integer> list = new ArrayList<>(); //用于存储得到的因数 //System.out.println(getAllTheFactors(n,list)); int total = 0; // 不超过n的的完全数的个数 for(int x = 1;x<=n;++x){ List<Integer> list1 = getAllTheFactors(x,list); int sum = 0; //注意每次sum要清0,sum是用来存储每一个数的因数的和 for(int i = 0 ;i<list1.size();++i){ sum = sum + list1.get(i); } if(sum ==x){ total++; } } System.out.println(total); } public static List<Integer> getAllTheFactors(int a, List<Integer> list){ list.clear(); //记得每一次清空list,否则上一次的数据还会保存。不debug看不出来。 for(int i=1;i<a;++i){ while (a%i==0){ list.add(i); break; //不加这句就是死循环 } } return list; } }