java给定范围求亲和数对

题目:亲和数是指这样的两个数,互为对方的约数(除自身以外)之和。求10000以内所有的亲和数对。目前思路只知道使用数组和循环语句,但关于如何表达出亲和数的性质不明白

亲和数的定义不是写了嘛。最直接的按照定义来写,先求和,然后判断是不是对方,两个数都满足这个条件就是亲和数

public static void main(String[] args) throws IOException {
    /** 求亲和数对 **/
    Scanner scanner = new Scanner(System.in);
    int input = scanner.nextInt();
    // key 公约数之和 ,value 倍数集合
    Map<Integer, List<Integer>> result = new HashMap<>();

    // 获取所有约数之和
    for (int i = 1; i < input + 1; i++) {
        // 获取公约数
        Integer addAll = getCommonDivisorAdd(i);
        if (addAll == 0) {
            // 公约数为0continue;
        }
        List<Integer> integers = result.get(addAll) == null ? new ArrayList<>() : result.get(addAll);
        integers.add(i);
        result.put(addAll,integers);
    }

    result.forEach((addAll,list)->{
        if(list.size() > 1){
            System.out.println(addAll + list.toString());
        }
    });

}

public static Integer getCommonDivisorAdd(int input) {
    // 已计算公约数
    List<Integer> list = new ArrayList<>();
    Integer result = 0;
    for (int i = input - 1; i > 0; i--) {
        if (input % i == 0 && !list.contains(i)) {
            result = result + i;
            list.add(i);
        }
    }
    return result;
}