import sys

sys.setrecursionlimit(2000)

def factors(number: int):
    """
    >>> factors(12)
    [2, 2, 3]
    >>> factors(2**10)
    [2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
    >>> factors(1031)
    [1031]
    """
    return _factors(number, 2, [])

def _factors(number: int, divider: int, l: list[int]):
    if number == 1:
        return l
    elif number % divider == 0:
        l.append(divider)
        return _factors(number // divider, divider, l)
    else:
        return _factors(number, divider+1, l)

import doctest
doctest.testmod()