Skip to content

172. 阶乘后的零 ​

  • 题号:172
  • 来源:LeetCode
  • 难度:中等
  • 标签:数学
  • 语言:TypeScript
  • 解法:2 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

解法一 ​

TypeScript · O(n) 时间 · O(1) 空间 · 更新于 2026-09-27

直接算阶乘再数末尾 0,大数会失真

typescript
/**
 * @difficulty medium
 * @tags 数学
 * @time O(n)
 * @space O(1)
 * @note 直接算阶乘再数末尾 0,大数会失真
 * @172. 阶乘后的零
 */

let n = 30

let sum = 1
for (let i = 1; i <= n; i++) {
    sum *= i
}
console.log(sum)

let ZeroNum = 0
let sum_str = sum.toString()
for (let i = sum_str.length - 1; i >= 0; i--) {
    if (sum_str[i] === '0') {
        ZeroNum++
    } else {
        break
    }
}

console.log(ZeroNum)

源码:ts/leetcode/172. 阶乘后的零.ts

解法二 · TypeScript ​

TypeScript · O(log n) 时间 · O(1) 空间 · 更新于 2026-09-27

累加 n/5、n/25…,统计因子 5 的个数

typescript
/**
 * @difficulty medium
 * @tags 数学
 * @time O(log n)
 * @space O(1)
 * @note 累加 n/5、n/25…,统计因子 5 的个数
 * @172. 阶乘后的零(解法二)
 */

let n = 30
console.log(Math.floor(n / 5) + Math.floor(n / 25) + Math.floor(n / 125) + Math.floor(n / 625) + Math.floor(n / 3125))

源码:ts/leetcode/172. 阶乘后的零(解法二).ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm