题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
参考了(https://www.nowcoder.com/users/605763917)同学的方案,按照自己的理解加了一些注释。使用双重循环的方法找,这个过程完全就是莽 ~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
/*
这个过程就是暴力的,从 n 开始,一直往下找,直到找到 1 为止。
*/
// 统计范围内完全数的数量
int count = 0;
// 定义一个 while 循环,从 num 开始一个一个往下找
while (num > 0) {
// 因子累加和的时候用
int sum = 0;
// i 从 1 ~ n 一个一个开始取模,只要等于0,就累加到 sum 上
for(int i = 1; i < num; i ++) {
if(num % i == 0) {
sum += i;
}
// 如果加到溢出来了,就直接跳出,其实也间接说明这个 n 不是完全数,完全数不会溢出来
if(sum > num) {
break;
}
}
// 判断当前的 num 和总和 sum 是否相同,相同则说明找到一个完全数,count++
if(num == sum) {
count ++ ;
}
// num - 1,找完 1000 该找 999、998、997...
num --;
}
System.out.println(count);
}
}

