题解 | #完全数计算#
完全数计算
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); } }