解题思路】: 本题可以通过遍历每一个约数,求和,判断完全数。约数计算可以遍历sqrt(n)的范围。


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int sum = 0;
        for (int i = 1; i < n; i++) {
            if(is_num(i)){
                sum++;
            }
        }
        System.out.println(sum);
    }

    private static boolean is_num(int x) {
        int[] nums = new int[x];
        int count = 0;
        for (int i = 1; i < x; i++) {
            if(x%i==0){
                nums[count++]=i;
            }
        }
        if(is_(nums,x)){
            return true;
        }
        else return false;
    }

    private static boolean is_(int[] nums, int x) {
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum+=nums[i];
        }
        if(sum==x)  return true;
        else return false;
    }
}