题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.ArrayList; import java.util.Scanner; public class Main { static ArrayList<Integer> factors = new ArrayList<>(); public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); // 如果不是合数,就没有必要进行因式分解 if (!isPrime(num)) { factorization(num); for (Integer factor : factors) { System.out.print(factor + " "); } } else { System.out.println(num); } } // 判断是不是质数 private static boolean isPrime(int num) { boolean flag = true; // 若存在一个因数则不是质数 for (int i = 2; i <= num / 2; i++) { if (num % i == 0) { flag = false; break; } } return flag; } // 寻找质因子的方法 // 递归寻找 private static void factorization(int num) { // 一个数经过多次因数分解,最后的时候相当于是自身也会变成一个质数 if (isPrime(num)) { factors.add(num); // 到达递归的终点 return; } for (int i = 2; i <= num / 2; i++) { if (num % i == 0) { factors.add(i); factorization(num / i); break; } } } }