java 数字的因数分解

dxxyhpgq  于 2022-10-30  发布在  Java
关注(0)|答案(1)|浏览(131)

我这里有一个代码,它提供了一个命令行parameter(number)的整数因式分解.但我不明白,如何使我的输出形式:parameter = number^exponent*number^exponent...例如:让我们使用500作为参数。我的输出应该是“500 = 2^2 * 5^3”

public class Primfaktorenzerlegung {
    public static void main(String[] args) {
        int [] result = factorsOf(Integer.parseInt(args[0]));
        System.out.println(args[0] + " = ");
        for(int i = 0; i < result.length && result[i] != 0; i ++){
            ;
            System.out.println(result[i] + " ");
        }
    }

    static int[] factorsOf(int val) {
        int limit = (int) Math.ceil(Math.sqrt(val));
        int [] numArray = new int[limit];
        int index = 0;

        for (int i = 1; i <= limit; i++) {
            if (val % i == 0) {
                numArray[index++] = i;
                val /= i;
            }
        }
        numArray[index] = val;
        return numArray;
    }
}

我不知道如何以请求的形式输出。我用println检查代码是否工作,现在我只需要提供正确的输出形式。

cwtwac6a

cwtwac6a1#

试试这个。

public static void main(String[] args) {
    NavigableMap<Integer, Integer> result = factorsOf(Integer.parseInt(args[0]));
    System.out.print(args[0] + " = ");
    String separator = "";
    for (Entry<Integer, Integer> e : result.entrySet()) {
        System.out.print(separator + e.getKey()
            + (e.getValue() == 1 ? "" : "^" + e.getValue()));
        separator = " * ";
    }
}

static NavigableMap<Integer, Integer> factorsOf(int val) {
    NavigableMap<Integer, Integer> factors = new TreeMap<>();
    for (int i = 2; i <= val; i++) {
        while (val % i == 0) {
            factors.compute(i, (k, v) -> v == null ? 1 : v + 1);
            val /= i;
        }
    }
    return factors;
}

参数输出=[500]

500 = 2^2 * 5^3

相关问题