题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
ArrayList sortList = getSortRes(a);
for(int i=0;i<sortList.size();i++){
if(i!=sortList.size()-1){
System.out.print(sortList.get(i)+" ");
}else{
System.out.print(sortList.get(i));
}
}
}
}
private static ArrayList getSortRes(int num){
ArrayList<Integer> al = new ArrayList<Integer>();
//主要是缩小范围,i< num的开方,否则,当num很大时, 时间花费超过预期
for(int i=2;i*i<num+1;){
if(isNum(i) && num%i==0){
num = num/i;
al.add(i);
}else{
i++;
}
}
al.add(num);
return al;
}
private static boolean isNum(int n){
boolean flag = true;
for(int i=2;i<n/2;i++){
if(n%i==0 && i!=n){
flag = false;
}
}
return flag;
}
}