If the argument is not too big, this can be tackled with logarithms.

See that the number of digits of `n!`

is `ceil(log10(n!))`

for `n`

greater than
1.

By definition,

```
n! = n * (n - 1) * ... * 1
```

Therefore,

```
log(n!) = log(n) + log(n - 1) + ... + log(1)
```

Thus, a simple and fast solution in Python is:

```
def factorial_digit_count(n):
if n < 2:
return 1
return ceil(sum(log10(x) for x in range(1, n + 1)))
```

**Using 64-bit IEEE binary floating point, this function returns correct results
up to n = 3,121,515**.
This approximation evaluates to 18,916,606, rather than 18,916,607, which would
be the correct answer according to Wolfram Alpha and my PARI program.