问题描述:
若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。简称“完数”
例如:6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064
编写一个算法判断n是否为完数。
public class PerfectNumber {
private static boolean isPerfectNumber(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum = sum + i;
}
}
if (sum == n) {
return true;
} else
return false;
}
/**
* @param args
*/
public static void main(String[] args) {
for (int i = 1; i < 10000; i++) {
if (isPerfectNumber(i)) {
System.out.println(i + " is Perfect Number. ");
}
}
}
}