1、在LinCode上看到求n!的尾部零的个数,简单的思考是不断除以10的次数
#n!尾部0的个数
def trailingZeros(n):
x=1
for i in range(1,n+1):
x*=i
k=0
for j in range(1,x):
if x>=(10**j) and x%(10**j)==0:
k+=1
else:
print(k)
break
2、求n!含有多少个0
#n的阶乘中0的个数
def countZeros(n):
x=1
for i in range(1,n+1):
x*=i
k=0
for j in range(0,x):
if x>=(10**j) and x%(10**j)==(x%(10**(j+1))) :
k+=1
elif x<(10**j):
print(k)
break
20!=2432902008176640000
countZeros(20),trailingZeros(20)
输出为:7,4