求一个整数的因数分解--Java--小白必懂

2022/2/25 1:31:42

本文主要是介绍求一个整数的因数分解--Java--小白必懂,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

 



这篇关于求一个整数的因数分解--Java--小白必懂的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程