根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积。
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); Long n=scanner.nextLong(); System.out.println(convert(n)); scanner.close(); } public static String convert(Long n) { List<Long> list=new ArrayList<Long>(); Long temp=n; for(long i=2;i<=temp/2;i++) { if(isPrimaryNum(i)) { while(n%i==0) { list.add(i); n=n/i; } if(n==1) break; } } String reStr=""; for(int i=0;i<list.size();i++) reStr+=list.get(i)+" "; return reStr.trim(); } public static boolean isPrimaryNum(long n) { if(n<=1) return false; if(n==2||n==3) return true; double sq=Math.sqrt(n); if(n%2==0) return false; for(int i=3;i<=sq;i+=2) { if(n%i==0) return false; } return true; } }