主要思路

  • 其实直接分解质因数用短除法应该很多人知道,主要复杂的是有些特别大的数很容易超时。所以每次对结果进行是否质数分析,减少循环次数。
import java.util.*;
import java.lang.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        Long num = scanner.nextLong();
        for (int i = 2;i <= num;i++){
            while (num % i == 0){
                System.out.print(i + " ");
                num /= i;
                if (isPrime(num) && num != 1){
                    System.out.print(num + " ");
                    return;
                }
                if (num == 1){
                    return;
                }
            }
        }
    }

    private static boolean isPrime(Long num){
        for (int i = 2;i < Math.sqrt(num);i++){
            if (num % i == 0) return false;
        }
        return true;
    }
}