题目描述补充:
题目:尾部的零
给定一个整数 n
,代表一个正整数 n!
(n
的阶乘),请计算 n!
结果末尾有多少个零。
阶乘 是所有小于及等于该数的正整数的积,n! = n × (n-1) × ... × 2 × 1
。
注意:结果是一个整数,表示 n!
结果末尾零的个数。
解题思路
要计算 n!
末尾零的个数,我们需要知道零是如何在阶乘中产生的。在整数乘法中,末尾的零是由因子 2
和 5
相乘得到的,而且 2
的因子通常比 5
的因子多,所以末尾零的个数主要由 5
的因子的个数决定。
因此,我们可以遍历从 1
到 n
的所有整数,计算其中 5
的因子的个数。由于 25
、125
等数包含多个 5
的因子(即 25 = 5^2
,125 = 5^3
),我们需要考虑这些数的贡献。
示例代码
PHP
function trailingZeroes($n) {
$count = 0;
while ($n > 0) {
$n = intval($n / 5);
$count += $n;
}
return $count;
}
// 示例
echo trailingZeroes(5); // 输出 1,因为 5! = 120
echo trailingZeroes(10); // 输出 2,因为 10! = 3628800
Python
def trailingZeroes(n):
count = 0
while n > 0:
n //= 5
count += n
return count
# 示例
print(trailingZeroes(5)) # 输出 1
print(trailingZeroes(10)) # 输出 2
JavaScript
function trailingZeroes(n) {
let count = 0;
while (n > 0) {
n = Math.floor(n / 5);
count += n;
}
return count;
}
// 示例
console.log(trailingZeroes(5)); // 输出 1
console.log(trailingZeroes(10)); // 输出 2
码小课网站分享
码小课网站中有更多关于算法和数据结构的内容分享,包括但不限于各种排序算法的实现、图论算法、动态规划等。在这里,你可以找到详尽的教程、实战项目以及面试技巧,帮助你在编程之路上不断进步。