Given two numbers $n$ and $k$ find the greatest power of $k$ that divides $n!$

Writing the factorial expression explicitely

$$n! = 1 \cdot 2 \cdot 3 \ldots (n - 1) \cdot n$$

We can see that every $k$-th member of the factorial is divisible by $k$ therefore one answer is $\left \lfloor \tfrac{n}{k} \right \rfloor$, however we can also see that every $k^2$-th term is also divisible by $k$ two times and it gives one more term to the answer, that is $\left \lfloor \tfrac{n}{k^2} \right \rfloor$, which means that every $k^i$-th term adds one factor to the answer, thus the answer is

$$\left \lfloor \frac{n}{k} \right \rfloor + \left \lfloor \frac{n}{k^2} \right \rfloor + \ldots + \left \lfloor \frac{n}{k^i} \right \rfloor + \ldots$$

The sum is actually finite and the maximum value of $i$ can be found using logarithms, let $k^i > n$, applying logarithms we have $i \cdot log(k) > log(n)$ which is equal to $i > \tfrac{log(n)}{log(k)}$ which is the same as $i > log_k n$

The sum discovered by Adrien-Marie Legendre is called Legendre’s Formula, let $d_a(b)$ be the number of times $a$ divides $b$

$$d_k(n!) = \sum_{i=1}^{log_k{n}} \left \lfloor \frac{n}{k^i} \right \rfloor$$
/**
* Computes the maximum power of k that is a divisor of n!
*
* @param {int} n
* @param {int} k
* @return {int}
*/
int max_power_in_factorial(int n, int k) {
int ans = 0;
while (n) {
n /= k;
ans += n;
}
return ans;
}