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 。这样的质因子肯定是唯一的,有厉害的大佬能说说为什么不是唯一的,或者是唯一的吗,我是当成唯一的来做,最后一个整数肯定能分成两个质因数的乘积

京公网安备 11010502036488号