人生倒计时
- 今日已经过去小时
- 这周已经过去天
- 本月已经过去天
- 今年已经过去个月
大数的阶乘问题很常见。我们来看看T公司的面试问题:
问题1:
1000的阶乘末尾有几个零?
问题2:
1000的阶乘有多少位数?
问题3:
1000的阶乘的值是多少?
1000的阶乘末尾有多少个0?
直接递归计算?有点天真。1000的阶乘是一个非常大的数字,所以我们必须想别的办法。注意:需要1000的阶乘末尾的零的个数,而不是求1000的阶乘。
喜欢编程的朋友可以加小Q群1026782549,可以免费领取学习资料和源代码!也可以关注边肖的微信微信官方账号:节目文子,获取资讯。
显然,从分解质因数的过程来看,末尾的零一定是2和5的乘积,而在阶乘中,5是稀缺值,2是剩余值。因此,只需要知道素数因子中5的个数就可以了。让我们以26的阶乘为例:
可以看出,5有6个,2也很多,我们只需要看5的数量就可以了。支一,26的阶乘末尾有六个零。用阶乘计算器看看,它是:
让我们讨论更一般的情况:
设f(x)是x中因子5的个数,而[x]是由x向下舍入的值,则有:
所以:
至于程序,给个递归版本:
结果:249。可以看出,1000的阶乘末尾有249个零。
喜欢编程的朋友可以加小Q群1026782549,可以免费领取学习资料和源代码!也可以关注边肖的微信微信官方账号:节目文子,获取资讯。
1000的阶乘有多少位数?
直接递归计算?有点天真。让我们看看下面的规则:
设f(x)是x的位数,而[x]是由x向下舍入的值,则:
至于程序,很简单:
结果:2568。可以看出,1000的阶乘有2568位。
1000的阶乘的值是多少?
直接递归计算?有点天真。让我们用绳子来做:
结果是:
可以看到,1000的阶乘有2568位,最后有249个零。
喜欢编程的朋友可以加小Q群1026782549,可以免费领取学习资料和源代码!也可以关注边肖的微信微信官方账号:节目文子,获取资讯。