# optimize5.py
import math

def factorial(n):
    result = 1
    while n > 1:
        result *= n
        n -= 1
    return result

def get_first_digit(n):
    while n >= 10:
        n = n // 10
    return n

def main():
    begin = 5000
    fact = factorial(begin - 1)
    for i in range(begin, begin + 100):
        fact = fact * i
        len_fact = math.floor(math.log10(fact)) + 1
        first_digit = fact // (10**(len_fact - 1))
        print(f'factorial({i}) has {len_fact} digits, and the first digit is {first_digit}.')

if __name__ == "__main__":
    main()
