public class OJ_1415 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int sNum = num; splitNum(sNum); } // 求整数的因式分解的方法 public static void splitNum(int num) { if (num == 1) { System.out.println(num); } HashMap<Integer, Integer> hap = new HashMap<>(); int kNum = num; for (int i = 2; i <= kNum; ) { if (kNum % i == 0) { if (hap.keySet().contains(i)) { hap.put(i, hap.get(i) + 1); } else { hap.put(i, 1); } kNum = kNum / i; i=2; } else { i++; } } // map中保存了每个因子的出现次数,然后遍历这个hashMap,如果需要从小到大显示还需要排序 // 使用Collections的sort方法对hashMap的key进行排序 Collection<Integer> key = hap.keySet(); List<Integer> lst = new ArrayList<>(key); Collections.sort(lst); StringBuilder sb = new StringBuilder(); for (int i = 0; i < lst.size(); i++) { sb.append(""+lst.get(i) + "^" + "("+hap.get(lst.get(i))+")"); } sb.append("=" + num); System.out.println(sb.toString()); } }
要求:给定一个整数,求整数的因式分解,要求输出结果按因子由大到小的方式排列输出
例子1:
输入:120
输出:2^(3)3^(1)5^(1)=120
例子2:
输入:6
输出:2^(1)3^(1)=120