一个数如果恰好等于它的因子之和, 这个数就称为”完数”. 例如 6 = 1+2+3。编程找出1000 以内的所有完数。
Java代码实现:
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
for (int i = 2; i <= 1000; i++) { // 这里从2开始,1 为本身,排除掉。
if (num_wan(i)) {
System.out.println(i);
}
}
}
private static boolean num_wan(int num) {
int sum = 0; //sum 用来计算因子的和
LinkedList<Integer> list = new LinkedList<>(); //用来装所有的因子,
for (int i = 2; i < num / 2; i++) { // 判断因子是否重复,重复就不装了,比如3和2 2和3。
if (!list.contains(i)) {
if (num % i == 0) {
list.add(i);
list.add(num / i);
sum = sum + i + (num / i);
}
}
}
if (sum+1 == num) { //和的结果 加1 ,1是所有数的因子
return true;
}else {
return false;
}
}
}
运行结果: