import itertools
import divisors


def funcio_divisor1():
    # Solució utilitzant funcions predefinides, itertools i la funció definida a l'altre apartat
    it1 = map(divisors.seq_div, itertools.count(1))
    it2 = map(llargada, it1)
    return it2

def llargada(it):  # retorna la llargada d'un iterador (sense desar els seus elements)
    return sum(map(lambda x:1, it))


def funcio_divisor2():
    # Solució com a funció generadora (i sense fer servir l'altre apartat)
    n = 1
    while True:
        s = 0
        for i in range(1, n+1):
            if n % i == 0:
                s = s + 1
        yield s
        n = n + 1

        
def funcio_divisor3():
    # Solució com a funció generadora, fent servir la funció de l'altre apartat
    n = 1
    while True:
        it = divisors.seq_div(n)
        s = 0
        for elem in it:
            s = s + 1
        yield s
        n = n + 1
        
    
# Tria la solució que vols provar
funcio_divisor = funcio_divisor3
