求2-60内的盈数和完数

188 阅读1分钟

盈数和完数

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class PerfectNumber {
    public static void main(String[] args) {
        // 完数
        System.out.println("完数: ");
        List list = getPerfectNumber(2, 60);
        list.forEach(i -> System.out.println(i));
        // 盈数
        list = getAbundantNumber(2,60);
        System.out.println("盈数: ");
        list.forEach(i -> System.out.println(i));
    }

    public static List<Integer> getPerfectNumber(int start, int end) {
        List<Integer> list = new ArrayList<>();
        int index = 0;
        for (int i = start; i <= end; i++) {
            int sum = 0;
            for (int j = 1; j < i; j++) {
                if (i % j == 0) sum += j;
            }
            if (i == sum) {
                list.add(i);
            }
        }
        return list;
    }

    public static List<Integer> getAbundantNumber(int start, int end) {
        List<Integer> list = new ArrayList<>();
        int index = 0;
        for (int i = start; i <= end; i++) {
            int sum = 0;
            for (int j = 1; j < i; j++) {
                if (i % j == 0) sum += j;
            }
            if (i > sum) {
                list.add(i);
            }
        }
        return list;
    }
}