题解 | #质数因子#--暴力破解
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { int num = in.nextInt(); List<Integer> result = new ArrayList<>(); // 先判断是否为质数 if (isPrime(num)) { System.out.println(num); } else { // 递归判断暴力破解 getResult(num, result); result.sort(Integer :: compareTo); result.forEach(res -> { System.out.print(res + " "); }); } } } private static void getResult(int num, List<Integer> result) { if (isPrime(num)) { result.add(num); return; } if (num % 2 == 0) { result.add(2); getResult(num / 2, result); } else if (num % 3 == 0) { result.add(3); getResult(num / 3, result); } else if (num % 5 == 0) { result.add(5); getResult(num / 5, result); } else if (num % 7 == 0) { result.add(7); getResult(num / 7, result); } else if (num % 11 == 0) { result.add(11); getResult(num / 11, result); } else if (num % 13 == 0) { result.add(13); getResult(num / 13, result); } else if (num % 17 == 0) { result.add(17); getResult(num / 17, result); } else if (num % 19 == 0) { result.add(19); getResult(num / 19, result); } else if (num % 23 == 0) { result.add(23); getResult(num / 23, result); }else if (num % 107 == 0) { result.add(107); getResult(num / 107, result); } } // 判断一个数是否为质数 private static boolean isPrime(int num) { if (num <= 3) { return true; } int sqrt = (int) Math.sqrt(num); // 是否能被小于等于sqrt的数整除 for (int i = 2; i <= sqrt; i++) { if (num % i == 0) { return false; } } return true; } }