Sponsored
Sponsored
To determine the number of trailing zeroes in a factorial (n!), observe that trailing zeroes are produced by 10s in the factorization of n!. Each 10 is the product of a 2 and a 5. In most factorial numbers, there are more factors of 2 than 5. Therefore, the number of trailing zeroes is determined by the number of times 5 is a factor. We count the number of multiples of 5 in the numbers from 1 to n (because each contributes at least one factor of 5). Then, we count the multiples of 25, 125, 625, etc., as these contribute an extra factor of 5 each time. Continue this counting until the power of 5 exceeds n.
Time Complexity: O(log5 n)
Space Complexity: O(1)
1#include <stdio.h>
2
3int trailingZeroes(int n) {
4 int count = 0;
5 while (n > 0) {
6 n /= 5;
7 count += n;
8 }
9 return count;
10}
11
12int main() {
13 int n = 5;
14 printf("%d\n", trailingZeroes(n));
15 return 0;
16}
The function trailingZeroes
calculates the number of trailing zeroes in the factorial of a given number n
. It repeatedly divides n
by 5, adding the quotient to count
, which represents the number of trailing zeroes.
In this approach, we directly count the number of trailing zeroes by iterating over all the numbers up to n
, checking if each is divisible by 5. If so, we increment a counter to track the factors of 5. This approach isn't as efficient as counting the most significant power of 5 due to potentially higher iteration counts.
Time Complexity: O(n log5 n)
Space Complexity: O(1)
1
JavaScript function leverages a double loop where the outer loop checks each integer up to n
, while the inner divides by 5 to find factors.