这种题,不可能真的从 1n 这个范围内找 有多少个 完全数。因为题目给定的 n 的范围是 1<=n<=51051<=n<=5*10^5 ,所以就算是单纯遍历这么多个数,就已经相当的耗时了,更别说一个一个数的判断,它是不是 完全数不现实。因此,我们直接看,完全数 到底有哪些直接 给结果就好。

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = Integer.valueOf(scan.nextLine().trim());
        if (n < 6) {
            System.out.println(0);
        } else if (n < 28) {
            System.out.println(1);
        } else if (n < 496) {
            System.out.println(2);
        } else if (n < 8128) {
            System.out.println(3);
        } else {
            System.out.println(4);
        }
    }
}