某个数的阶乘尾部含有0的数

来源:互联网 发布:自然灾害数据查询 编辑:程序博客网 时间:2024/05/22 13:56

题目:计算某个数阶乘尾部所含0的个数。例如:5!=1*2*3*4*5=120尾部含有一个0.

思路:我们知道一个数要产生0,该数肯定是2的倍数或是5的倍数。对于对于某个数的阶乘,我们将其做质因数分解,n!=(2^x)(3^y)(5^z)*…….,产生0的个数肯定为min(x,z),而一个数分解为5的倍数的个数肯定小于等于2的倍数的个数。即min(x,z) = z,因此我们只需考虑5的倍数的个数。

int numberOf0(int n){    int count = 0;    int j;    for(int i =5;i <= n;i++){        j = i;        while(j%5 == 0){            count++;            j = j / 5;        }    }    return count;}
0 0