题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.time.LocalDateTime; import java.util.*; import java.util.stream.IntStream; import java.util.stream.Stream; import static java.util.stream.Stream.*; public class Main { public static void main(String[] args) throws IOException { //testCompletePack(); testTh(); } private static void testTh() throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String str; while ((str = bf.readLine()) != null) { int parseInt = Integer.parseInt(str); HashMap<Integer, Integer> hp = new HashMap<>(); int count = 0; for (int j = 1; j < parseInt; j++) { double sqrt = Math.sqrt(j); for (int i = 1; i < sqrt; i++) { if (j % i == 0) { hp.put(i, j / i); } } Set<Map.Entry<Integer, Integer>> entries = hp.entrySet(); int res = 0; for (Map.Entry<Integer, Integer> entry : entries) { Integer key = entry.getKey(); Integer value = entry.getValue(); //System.out.println("key:+"+key+"value:+"+value); if (value == j) { res = res + key; continue; } res = res + key + value; } hp.clear(); if (res == j) count++; } System.out.println(count); } } }