题解 | 质数因子
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 long num = in.nextLong(); getSplit(num); Collections.sort(list); for (long i : list) { System.out.print(i+" "); } } public static List<Long> list = new ArrayList<>(); public static void getSplit(long n){ if (n == 1) return; if(isPrime(n)){ list.add(n); return; } for (long i = (long) Math.sqrt(n); i >= 2; i--) { if (n % i == 0 && isPrime(i)){ list.add(i); getSplit(n/i); break; } } } public static boolean isPrime(long n){ if (n <=2) return true; for (int i = 2; i * i <= n; i++) { if (n % i == 0) return false; } return true; } }
对于给定的整数 n,从小到大依次输出它的全部质因子。即找到这样的质数 p1,p2,⋯ ,pkp1,p2,⋯,pk ,使得 n=p1×p2×⋯×pk 。这样的质因子肯定是唯一的,有厉害的大佬能说说为什么不是唯一的,或者是唯一的吗,我是当成唯一的来做,最后一个整数肯定能分成两个质因数的乘积