在C ++中计算数字阶乘中的尾随零

给定一个整数作为输入。目的是在为该数字计算的阶乘中找到尾随零的数目。N的阶乘是[1,N]范围内所有数字的乘积。

我们知道,只有当数字是10的倍数或具有因子对(2,5)时,我们才会得到尾随零。在所有大于5的阶乘中,在该数的素因式分解中,我们的5比2多2。将数字除以5的幂将得出5s的因子。因此,5的数目将告诉我们尾随零的数目。

例如

输入值

number=6
输出结果
数字阶乘中尾随零的计数为: 1

说明

The factorial is 30.
Prime factors of 30 : 2 * 3 * 5
So only one pair of (2,5) exists so trailing zeros is 1.

输入值

number=12
输出结果
数字阶乘中尾随零的计数为: 2

说明

The factorial is 479001600.
Prime factors of 479001600 : 210 x 35 x 52 x 71 x 111
So we can get 2 pairs of (2,5) so trailing zeros are 2

以下程序中使用的方法如下-

在这种方法中,我们将数字除以5的幂。如果结果大于1,则尾随零的数量将为5s。添加此计数。

  • 以整数作为输入。

  • 功能 trailing_zeros(int number) 获取数字并返回数字阶乘中尾随零的计数。

  • 将初始计数设为0。

  • 使用for循环,将数字除以5的幂。

  • 如果number / i大于1,则添加此值以计数。

  • 返回计数作为循环结束时的结果。

示例

#include <iostream>
using namespace std;
int trailing_zeros(int number){
   int count = 0;
   for (int i = 5; number / i >= 1; i *= 5){
      int temp = number / i;
      count = count + temp;
   }
   return count;
}
int main(){
   int number = 50;
   cout<<"数字阶乘中尾随零的计数为: "<<trailing_zeros(number);
   return 0;
}
输出结果

如果我们运行上面的代码,它将生成以下输出-

数字阶乘中尾随零的计数为: 12