主要思路
- 其实直接分解质因数用短除法应该很多人知道,主要复杂的是有些特别大的数很容易超时。所以每次对结果进行是否质数分析,减少循环次数。
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;
}
}