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)
1using System;
2
3class FactorialTrailingZeroes {
4 public static int TrailingZeroes(int n) {
5 int count = 0;
6 while (n > 0) {
7 n /= 5;
8 count += n;
9 }
10 return count;
11 }
12
13 static void Main() {
14 int n = 5;
15 Console.WriteLine(TrailingZeroes(n));
16 }
17}
The C# implementation uses a similar approach by decrementally dividing n
and accumulating 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
This C implementation iterates over numbers from 1 to n
. For each number, if it is divisible by 5, it divides it further, counting each division as a factor of 5.