计算n(1<=n<=1000)的阶乘有多少个尾随零。
阶段1:

思路:
-
刚开始做这道题的时候,我是先求出n!再计算有多少个0
这样的复杂度很大,而且当n逐渐增大,int甚至long都存储不下n的阶乘的值。了解到可以使用BigInteger类型来存放阶乘值(暂未深入了解,先不展开说)。 -
n!可以质因数分解,由于2*5=10,所以尾零的个数只与2和5有关
一组2,5说明尾零个数+1,但是能被2整除的频率比被5整除的频率高的多,所以尾零的个数其实只和5相关,
n!能被多少个5整除,就有多少个0
阶段2(循环):

阶段三(递归):

博客围绕计算n(1<=n<=1000)阶乘的尾随零个数展开。最初思路是先求n!再算0的个数,但复杂度大且数据易溢出,可考虑用BigInteger类型。后发现n!质因数分解中,尾零个数只与2和5有关,因2出现频率高,实际只和5相关,还提及循环和递归阶段。
3002

被折叠的 条评论
为什么被折叠?



