首页 > 解决方案 > Java中的因素

问题描述

我正在尝试计算 n 的阶乘的素因子列表,其中素因子按升序排序,并且此列表中的每个因子与它在阶乘的素因子分解中出现的次数完全相同。

我有一个程序可以计算素数的链表,直到指定的数字,但我不确定如何在将当前正乘以阶乘的整数的素数因子附加时实现它:

标签: javaprimesfactorialprime-factoring

解决方案


这是另一种方式。它包括几项检查以确保不必要的测试,以便尽快退出循环。如果想要在 N 阶乘末尾找到 0 的数量,它的工作方式相同。为此,只需将除以N5 的连续幂的商相加(因为 5 是 10 的较大因子)。

这是通过连续除以每个素数将 N 的商相加来实现的。

    public static List<Integer> getNFactorialFactors(int n, List<Integer> primes) {
        List<Integer> factors = new ArrayList<>();
        int nn = n;
        for (int p : primes) {
            while (nn > 1) {
                for (int i = nn / p; i > 0; i--) {
                    factors.add(p);
                }
                nn /= p;
            }
            nn = n;
        }

        return factors;
    }

推荐阅读