面试题:求100!后0的个数

100的阶乘末尾有多少个零?
阶乘末尾一个0表示一个进位,相当于乘以10.而10由2*5所得,在1-100中能产生10的数有 0,2,4,5,6,8结尾的数字,其中4,6,8都是2的倍数,所以只留2就可以。因此只剩下2和5,而在2和5中,只要看5的个数就可以,1-100中有5,15,25,35,45,55,65,75,85,95。
1.每隔5个,会由2*5 = 10产生一个0
2.每隔5*5个,会由4*25(2*5*2*5 = 100)产生两个零
3.每隔5*5*5个,会由8*75(2*5*2*5*2*5 = 1000)产生3个0
所以100!末尾0的数量为100/5+100/25 = 20+4 = 24
学到这里就结束了吗?那只是得一鱼而已。
N!的末尾有多少0?
N/5+N/5^2+N/5^3+...

python代码实现:

 1 import math
 2 N= int(input("how many 0 at the end of its' factorial:\n"))
 3 
 4 a = 5
 5 sum = 0
 6 while a<= N:
 7     sum = sum+math.floor(N/a)
 8     a =a*5
 9 
10 print(sum)

 

posted on 2015-04-14 21:42  lemon_wang  阅读(533)  评论(0)    收藏  举报