//A.java
public class A {
public static void main(String[] args) {
for (int i = 2; i < 10000; i++) {
if (isPerfect(i)) {
System.out.print(i + " = ");
exec(i);
}
}
}
public static boolean isPerfect(int n) {
if (n == sum(n)) {
return true;
}
return false;
}
public static int sum(int n) {
int s = 1, i = 2;
while (i < n / i) {
if (n % i == 0) {
s += (i + n / i);
}
i++;
}
return s;
}
public static void exec(int n) {
System.out.print("1");
int i = 2;
while (i < n / i) {
if (n % i == 0) {
System.out.print(" + " + i + " + " + n / i);
}
i++;
}
System.out.println();
}
}
运行结果:
6 = 1 + 2 + 3
28 = 1 + 2 + 14 + 4 + 7
496 = 1 + 2 + 248 + 4 + 124 + 8 + 62 + 16 + 31
8128 = 1 + 2 + 4064 + 4 + 2032 + 8 + 1016 + 16 + 508 + 32 + 254 + 64 + 127