题目:数,比如150=2*3*5*5,其质因数为2 3 5 5。
输入:输入由多组测试数据组成,第一行输入一个整数t,表示测试数据的组数,接下来的t行,每行输入一个正整数。
输出:输出有t行,每行依次对应一组测试数据的输出结果。
import java.util.Scanner;
public class DecomposePriNum {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
String s=scan.nextLine();
int count=Integer.parseInt(s);
String[] strArr=new String[count];
for(int i=0;i<strArr.length;i++){
String str=scan.nextLine();
strArr[i]=getStrPriNum(str);
}
for(int i=0;i<strArr.length;i++){
System.out.println(strArr[i]);
}
}
//分解质因数,从2开始除,除不断时,找大一点的质因数再除,直至余数为零
private static String getStrPriNum(String str){
int num=Integer.parseInt(str);
int priNum=2;
String reStrArr="";
for(;1!=num;){
if(num%priNum==0){
reStrArr=reStrArr+priNum+" ";
num=num/priNum;
}else{
priNum=getPriNum(priNum);
}
}
return reStrArr;
}
//获得更大的质因数
private static int getPriNum(int priNum){
for(int i=priNum+1;;i++){
for(int j=2;j<i;j++){
if(i%j==0){
break;
}
}
return i;
}
}
}