一个数如果恰好等于它的因子和,这个数就成为完数。
例如:6 = 1 + 2 + 3。再如 8 的因子和是7(即1 + 2 + 4),8不是完数。
编程找出1000以内的所有完数。
public class PerfectNum {
public static void main(String[] args) {
for (int i=1; i <= 999; i++) {
if (isPrefectNum(i)) {
System.out.println(i);
}
}
}
/**
* 判断num是否为完数
* @param num 入参num
* @return true 完数;false 不是完数
*/
public static boolean isPrefectNum(int num) {
// 定义因子和,默认加上了因子1
int factorSum = 0;
for (int i=1; i<num; i++) {
// 如果num 模 i 等于0 ,说明i 为 num 的因子
if (num % i == 0) {
// 将i值加到factorSum 上
factorSum += i;
}
}
return factorSum == num;
}
}