在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(intnumber)获取数字并返回数字阶乘中尾随零的计数。
将初始计数设为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