parameters: (factors)
docstring: A generator from the divisors generated from the prime factors given.
  
    Args:
        factors: Dictionary of prime factors (keys) and their exponents (values).
    Returns:
        A divisor as a dict of prime factors (keys) and their exponents (values).
    Usage:
        >>> print('\\n'.join(map(str, divisorsFactors({2:2, 5:2}))))
        {2: 0, 5: 0}
        {2: 1, 5: 0}
        {2: 2, 5: 0}
        {2: 0, 5: 1}
        {2: 1, 5: 1}
        {2: 2, 5: 1}
        {2: 0, 5: 2}
        {2: 1, 5: 2}
        {2: 2, 5: 2}
docstring_summary: A generator from the divisors generated from the prime factors given.
docstring_tokens: A generator from the divisors generated from the prime factors given .
function: def divisorsFactors(factors):
    """
    A generator from the divisors generated from the prime factors given.
  
    Args:
        factors: Dictionary of prime factors (keys) and their exponents (values).
    Returns:
        A divisor as a dict of prime factors (keys) and their exponents (values).
    Usage:
        >>> print('\\n'.join(map(str, divisorsFactors({2:2, 5:2}))))
        {2: 0, 5: 0}
        {2: 1, 5: 0}
        {2: 2, 5: 0}
        {2: 0, 5: 1}
        {2: 1, 5: 1}
        {2: 2, 5: 1}
        {2: 0, 5: 2}
        {2: 1, 5: 2}
        {2: 2, 5: 2}
    """
  
    counter = [0]*len(factors)
  
    acc = reduce(lambda x,y: x*(y+1), factors.values(), 1)
  
    for _ in range(acc):
      q = 1 # To kick-off the counting
      yield dict( zip( factors.keys(), counter )) # up front to give zeroth value
      for i,e in enumerate(factors.values()):
        if q == 1:
          q, counter[i] = divmod(counter[i]+1, e+1)
        else:
          break
function_tokens: def divisorsFactors ( factors ) : counter = [ 0 ] * len ( factors ) acc = reduce ( lambda x , y : x * ( y + 1 ) , factors . values ( ) , 1 ) for _ in range ( acc ) : q = 1 # To kick-off the counting yield dict ( zip ( factors . keys ( ) , counter ) ) # up front to give zeroth value for i , e in enumerate ( factors . values ( ) ) : if q == 1 : q , counter [ i ] = divmod ( counter [ i ] + 1 , e + 1 ) else : break