C++中计算阶乘的尾随零个数
给定一个整数作为输入。目标是找到该数字阶乘计算中尾随零的个数。一个数字 N 的阶乘是范围 [1, N] 内所有数字的乘积。
我们知道,只有当数字是 10 的倍数或具有因子对 (2,5) 时,我们才会得到尾随零。在任何大于 5 的数字的阶乘中,在该数字的质因数分解中,2 的个数都多于 5 的个数。将数字除以 5 的幂将给出其因子中 5 的个数。因此,5 的个数将告诉我们尾随零的个数。
例如
输入
number=6
输出
Count of trailing zeros in factorial of a number are: 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
输出
Count of trailing zeros in factorial of a number are: 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,则尾随零的个数将是 5 的个数。将其添加到计数中。
将一个整数作为输入。
函数 `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<<"Count of trailing zeros in factorial of a number are: "<<trailing_zeros(number); return 0; }
输出
如果我们运行上述代码,它将生成以下输出:
Count of trailing zeros in factorial of a number are: 12
广告