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()