题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println(getNum(n));
}
//获取完美数个数
private static int getNum(int n) {
if (n == 1) {
return 0;
}
int count = 0;
for (int i = 2; i <= n; i++) {
if (test(i)) {
// System.out.println(i);
count++;
}
}
return count;
}
//判断是否是完美数
private static boolean test(int i) {
int sum = 0;//累计真因子的和
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
return sum == i;
}
}
解题思路:
1, 对所有候选数进行遍历, 累计完美数的个数即可