# Zeroes at the end of a FACTORIAL

murshid_islam
how can i find the number of zeroes at the end of 100!
how can i find the number of zeroes at the end of n!

SteveRives
murshid_islam said:
how can i find the number of zeroes at the end of 100!
how can i find the number of zeroes at the end of n!

Your question is the same as finding out how often 5 is a prime factor on the natural numbers.

So I am guessing that 100! has 20 zeros, because in counting by fives, we get to 100 after 20 steps.

Last edited:
Homework Helper
SteveRives said:
Your question is the same as finding out how often 5 is a prime factor on the natural numbers.

So I am guessing that 100! has 20 zeros, because in counting by fives, we get to 100 after 20 steps.
You are WRONG, SteveRives.
(*)You will have a number which is divisible by 5 for every 5 successive integer.
(*)You will have a number which is divisible by 25 (ie 5.5) for every 25 successive integer.
(*)You will have a number which is divisible by 125 (ie 5.5.5) for every 125 successive integer, and so on...
So you will have 20 numbers which is divisible by 5 (included numbers that is divisible by 25).
And you will have 4 numbers which is divisible by 25.
So you will have: 20 + 4 = 24 zeros in 100!
In general, you will have: n! has:
$$C = \left[ \frac{n}{5} \right] + \left[ \frac{n}{5 ^ 2} \right] + \left[ \frac{n}{5 ^ 3} \right] + ... + \left[ \frac{n}{5 ^ q} \right]$$ zeros at the end.
You can stop the sum at any q such that:
$$\left[ \frac{n}{5 ^ q} \right] = 0$$
Where [...] denotes the integer part of a number. For example : [1.55] = 1, [0.77] = 0, [14.333333] = 14.
Viet Dao,

Last edited:
SteveRives
Yes, I just realized that we have to add four more! Why? Because in 20 steps, there are four times that five is reduplicated.

Finding the number of times 5 is a prime factor is right, but, for example, when we get to 25 it is in there twice. And so 20 / 5 is 4. There are four times that happens. Add that back into the 20 and we get 24.

finkerbean
The formula given in this thread is inaccurate. It's not the rounding function, but the floor function that should be used.

floor(n/5)+floor(n/(52))+floor(n/(53))+...

This is because rounding each quotient may occasionally result in counts that are too high. For example: 999!

999/5=199.8~200 (correct value: 199)
999/25=39.96~40 (correct value: 39)
999/125=7.992~8 (correct value: 7)
999/625=1.5984~2 (correct value: 1)
Total: 250 (correct value: 246)

As you can see, there's an error of 4 zeros!

Edit: Never mind. I misinterpreted his symbols. The Rounding function is usually indicated by square brackets. The Floor, or the integer part of the number, is indicated by L-shaped brackets. So naturally without reading the entire post, I jumped to a conclusion.

Last edited:
devas123
for writing a program it may be useful to get the number of zeros at the end of a factorial without usage of floor function:

n = p(1)*5 + q(1)

p(1) = p(2)*5 + q(2)
p(2) = p(3)*5 + q(3)

etc

p(n-1) = p(n)*5 + q(n)

so,

p(n) = (p(n-1) - q(n))/5
p(n-1) = (p(n-2) - q(n-1))/5

etc

where q(i) is actually p(i-1) mod 5 , or q(i) = p(i-1)%5

Kishore189
You provided the easiest solution.

One 5 each from 5,10,15,20,30,35,40,45,55.......70,80,85…
(excluded 25,50,75,100) so that's 15x1=15

Two 5s each from 25,50,100
Three 5s from 75

15+2x3+3x1=24

It was an easy problem. Why did I think its tough :/