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