个人看法,从2开始,比如180中有两个质子2,180/2/2=45,再对3进行同样的步骤,最终得到2 2 3 3 5
//功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)
//(如180的质因子为2 2 3 3 5 )
//最后一个数后面也要有空格
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNextLong()) {
long num = input.nextLong();
ArrayList<Long> zhizi = new ArrayList<>();//存放质子
for (Long i = 2L; i <= num; i++) {//从2开始,取质子
int n=0;
while(num%i==0) {//比如num=100,可取2次2
n++;
num = num/i;
}
while (n>0) {//填入质子数组中
zhizi.add(i);
n--;
}
}
for(Long m : zhizi) {//输出所有质子
System.out.print(m+" ");
}
System.out.println();
/*Long[] arr = new Long[zhizi.size()];
zhizi.toArray(arr);
for (long sum: arr)
System.out.print(sum+" ");转数组*/
}
}
}

京公网安备 11010502036488号