# optimize1.py
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
    for i in range(begin, begin + 100):
        len_fact = len(str(factorial(i)))
        first_digit = get_first_digit(factorial(i))
        print(f'factorial({i}) has {len_fact} digits, and the first digit is {first_digit}.')

if __name__ == "__main__":
    main()
