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

首文发表在 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;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,651评论 0 5
  • 2016年7月8日,国家工商行政管理总局发布的《互联网广告管理暂行办法》(以下简称《暂行办法》)将在今天(9月1日...
    APP干货铺子阅读 178评论 0 0
  • 他不爱我 牵手的时候太冷清拥抱的时候不够靠近他不爱我 说话的时候不认真沉默的时候又太用心我知道他不爱我他的眼神说出...
    南陈镇南王阅读 572评论 2 3
  • 修“‘世俗谛’菩提心”入手有 一个很重要的修法,就是修“四无量心”,修四个无量的心。哪四个无量的心?慈无量的心;悲...
    快乐小屋刘丽华阅读 1,084评论 0 0
  • 六月的江南, 连梦里都氤氲着水汽。 撑伞走在路上, 望见湿了翅膀的鸟依旧天上飞翔, 看到桥下汇涨的溪流挟裹沙石污浊...
    唐人青阅读 190评论 2 5