个人看法,从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+" ");转数组*/ } } }