【笔记】100的阶乘中有多少个末尾0?
2017-03-18 15:54
489 查看
问题
100的阶乘(100!)中的末尾有多少个0?
分析
2 * 5 = 10,所以每个
2, 5对就能形成一个末尾0,解决这个问题就在于找出100内有多少个
2, 5对。
由于100内含2因子的数量要大于含5因子的数量,所以简化为100内含多少个5因子的问题。
直觉上:
5, 10, 20, 25, ... 90, 95, 100这20个数字内有5因子。但需要注意的是
25, 50, 75, 100这4个数含
5 * 5也就是两个5因子,所以要算两次。
综上,100内含24个5因子,所以24个
2, 5对,也就是100!有24个末尾0.
推广
如果把问题从100!推广到
N!呢?
同样要考虑
2, 5对, 考虑含5因子的数量。
不同的是,N内可能含
5 * 5,
5 * 5 * 5… 需要重新考虑。
代码
python 调用 math.factorial()计算阶乘计算末尾0的代码
# -*- coding: utf-8 -*- """ Created on Sat Mar 18 15:38:56 2017 @author: lwx """ import math def count_0(n): count = 0 i = 1 while 5 ** i < n: count += n / (5 ** i) i += 1 return count if __name__ == '__main__': n = 100 num_of_0 = count_0(100) n_factorial = math.factorial(n) print('%d! = %d' % (n, n_factorial)) print('%d!的末尾0个数为: %d' % (n, num_of_0))
out:
100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 100!的末尾0个数为: 24
相关文章推荐
- Java面试题:100的阶乘末尾有多少个零?
- Java面试题:100的阶乘末尾有多少个零?
- 100阶乘末尾有多少个零
- Java面试题:100的阶乘末尾有多少个零?
- 100的阶乘末尾有多少个0的问题
- C++中求100的阶乘的末尾包含多少个0?
- 100的阶乘末尾有多少个零
- Java面试题:100的阶乘末尾有多少个零?
- 100 的阶乘末尾有多少个0?
- 100 的阶乘末尾有多少个0?
- 100 的阶乘末尾有多少个0? .
- Java面试题:100的阶乘末尾有多少个零?
- 100的阶乘末尾有多少个零?
- 100的阶乘末尾有多少个零?
- 100阶乘末尾有多少个零?
- 给定一个整数N,那么N的阶乘N!末尾有多少个零呢?
- 大整数的阶乘的末尾有多少的0
- fjnu 1307 阶乘结果末尾有多少零
- PKU1401:给定一个整数N,那么N的阶乘N!末尾有多少个0。
- 阶乘结果末尾有多少零?