为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript实现LeetCode第172题:阶乘后的零

标签:
JavaScript

首文发表在 172. 阶乘后的零

题目描述

给定一个整数 n,返回 n! 结果尾数中零的数量。

示例 1:

输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。

示例 2:

输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.

思路

这个问题可以用数学的方法简单分析;
10 = 2 * 5(质因数分解)

从最末尾开始连续地每出现一个0,即表示有一个 (2 * 5) 组出现。
而对于正整数 N,在[0, N]范围内,质因子中含有 2 的总是会比质因子含有 5 的要多。即如果质因子有 5 的数字总数为 a,那么质因子为2的总数 b >= a。因此,有x个质因子含有 5 的数,就有至少x个含有 2 的数。

于是,只要需要知道质因数含有 5 的数字有多少个,即可知道末尾连续出现 0 的个数有多少

解决方案

/**
 * @param {number} n
 * @return {number}
 */var trailingZeroes = function (n) {    let count = 0;    // 因为可能出现一个数的质因子有多个5
    while (n >= 5) {
        n = Math.floor(n / 5);
        count += n;
    }    return count;
};



作者:funnycoderstar
链接:https://www.jianshu.com/p/7b0728fb95c9


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消