Problem:
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
Analysis:When to multiply numbers, we can decompose each number into product of primes and re-arrange the order of multiplications. Moreover, each zero in the tail of product comes only from a product of one two and one five. Since the number of prime factor 2 is more than the prime factor 5. Then, the number of tail zeros is equal to the number of prime factor 5.
This solution is ensured by the fundemental theorem of arithmetics.
Solution:
C++:
int trailingZeroes(int n) {
if(n == 0)
return 0;
int count = 0;
while(n != 0) {
n /= 5;
count += n;
}
return count;
}
Java
:
Python: