题解 | #完全数计算#
完全数计算
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;
}
}
查看7道真题和解析

汤臣倍健公司氛围 373人发布