码迷,mamicode.com
首页 > 其他好文 > 详细

N的阶乘末尾有多少个0

时间:2016-08-24 00:49:14      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

N的阶乘(N!)中的末尾有多少个0?

N的阶乘可以分解为: 2的X次方,3的Y次方,4的5次Z方,.....的成绩。由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M = MIN(X,Z),不难看出X大于Z,因为被2整除的频率比被5整除的频率高的多。

要计算Z,最直接的方法就是求出N的阶乘的所有因式(1,2,3,...,N)分解中5的指数。然后求和

 1 int fun1(int n)
 2 {
 3     int num = 0;
 4     int i,j;
 5     
 6     for (i = 5;i <= n;i += 5)
 7     {
 8         j = i;
 9         while (j % 5 == 0)
10         {
11             num++;
12             j /= 5;
13         }
14     }
15     
16     return num;
17 }

 5是+1,10里面有1一个5,15=3*5有一个5……25是5*5有两个5

N的阶乘末尾有多少个0

标签:

原文地址:http://www.cnblogs.com/raichen/p/5801292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!