题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
方法一:暴力算法
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
for (int i = 2; i <= n; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
count++;
}
}
System.out.println(count);
scanner.close();
方法二:优化算法
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
for (int i = 2; i <= n; i++) {
int sum = 1;
for (int j = 2; j * j <= i; j++) {
if (i % j == 0 && i % j != j) {
//短路与,不整除直接过
//遍历到根号j即可
sum = sum + j + i / j;
} else if (i % j == j) {
sum += j;
}
}
if (sum == i) {
count++;
}
}
System.out.println(count);
scanner.close();


