1000的阶乘(10的阶乘是多少)

大数阶乘问题,是很常见的,来看一下T公司的面试题目:

问题一:

1000的阶乘末尾有多少个0?

问题二:

1000的阶乘有多少位数?

问题三:

1000的阶乘的值是多少?

1000的阶乘末尾有多少个0?

直接递归计算吗?有点天真了。1000的阶乘,是一个非常大的数字,得想其它办法了。注意:要求的是1000的阶乘末尾的0的个数,而不是求1000的阶乘。

喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!也可以关注小编的微信公众号:编程雯子,领取资料哦

很显然,从分解质因数的过程来看,结尾的0必然是2和5的乘积,而且在阶乘中,5是稀缺值,而2是富余值,所以,只需要知道质因数中5的个数就行了。我们以26的阶乘为例:

1000的阶乘(10的阶乘是多少)插图

可见:其中有6个5,有充足的2,所以只需要看5的个数。易知,26的阶乘的末尾有6个0. 用阶乘计算器来看下,果然如此:

1000的阶乘(10的阶乘是多少)插图1

我们来讨论更一般的情况:

设f(x)是x中因数5的个数, [x]为x向下取整的值,则有:

1000的阶乘(10的阶乘是多少)插图2

所以:

1000的阶乘(10的阶乘是多少)插图3

至于程序,给个递归版本吧:

1000的阶乘(10的阶乘是多少)插图4

结果:249. 可见,1000的阶乘末尾有249个0.

喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!也可以关注小编的微信公众号:编程雯子,领取资料哦

1000的阶乘有多少位数?

直接递归计算吗?有点天真了。我们来看下如下规律:

1000的阶乘(10的阶乘是多少)插图5

设f(x)为x的数位个数,[x]为x向下取整的值,则有:

1000的阶乘(10的阶乘是多少)插图6

至于程序,那就很简单了:

1000的阶乘(10的阶乘是多少)插图7

结果:2568. 可见,1000的阶乘有2568位。

1000的阶乘的值是多少?

直接递归计算吗?有点天真了。 还是用字符串来做吧:

1000的阶乘(10的阶乘是多少)插图8

1000的阶乘(10的阶乘是多少)插图9

结果是:

1000的阶乘(10的阶乘是多少)插图10

可以看到,1000的阶乘有2568位,且最后有249个0.

喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!也可以关注小编的微信公众号:编程雯子,领取资料哦

最新版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如有侵权请联系删除!站长邮箱:121259802@qq.com