当前位置: 首页 > 知识库问答 >
问题:

在不计算阶乘Java的情况下从大量数字中查找阶乘尾零

徐淳
2023-03-14

一些被测试的数字将导致10000位的阶乘,因此计算这一数字以找到尾随的零似乎是不可能的。如何在不计算阶乘的情况下找到尾随零的数量。

        long sum = 1;
        for (int i = 1; i < n+1; i++) {
            sum *= i;
        }
        char[] length = String.valueOf(sum).toCharArray();
        int count = 0;
        for (int i = length.length-1; i > 0; i--) {
                if (length[i] == '0')
                    count++;
                if (length[i] != '0')
                    break;
        }
        return count;
    }

共有1个答案

谯嘉懿
2023-03-14

我确实相信解决方案是(不包括整数溢出):

public static int zerosFactorialTrailing(int n) {
    int fives = 0;
    for (int i = 5; i <= n; i *= 5) {
        fives += n / i;
    }
    /*
     * There are always more twos than fives
     *
    int twos = 0;
    for (int i = 2; i <= n; i *= 2) {
        twos += n / i;
    }
    return Math.min(twos, fives);
    */
    return fives;
}
 类似资料:
  • 问题内容: 我尝试使用for循环和double数据类型以典型方式找到大量的阶乘,例如8785856。 但是结果显示无限大,可能是因为它超出了其极限。 因此,请引导我找到大量乘数的方法。 我的代码: 输出:- 我是Java的新手,但已经学习了IO处理的所有概念。 问题答案:

  • 问题内容: 我正在尝试计算阶乘产生的数字的尾随零(这意味着数字变得很大)。以下代码采用一个数字,计算该数字的阶乘,并计算尾随零。但是,当数字大约为25!时,numZeros将不起作用。 我并不担心这段代码的效率,并且我知道有多种方法可以使这段代码的效率更好。我要弄清楚的是为什么计数大于25的数字结尾的零!不管用。 有任何想法吗? 问题答案: 您的任务不是计算阶乘,而是计算零的数量。一个好的解决方案

  • 我试图计算阶乘中尾随零的数量。 我认为尾随零的数量不正确。 使用计数(30)时,30中有7个尾随的0。然而,它正在返回6。

  • 我如何使程序执行一个新的或重复的操作,或要求用户再次输入一个数字,并知道它的阶乘。

  • 我试图计算给定数字的阶乘中尾随零的数量,例如。, ,其中尾随零 ,其中尾随零 我的问题是,我有一个像df这样的数据帧 我知道R中的阶乘是用来计算阶乘的,但我不知道如何计算尾部的零。任何帮助都将不胜感激!

  • 我需要计算特定数字的计数(介于0之间 这适用于小数字输入:7 0输出:2描述:7!=5040有两个零,但对于大数字需要很长时间输入: