Diseñad la función @pos_muchos_divisores(n, listanum)@ que, dado un valor entero n no negativo y una lista listanum de números enteros mayores que cero devuelva la posición del primer valor en listanum que tenga exactamente n divisores. Si tal valor no existe, tiene que devolver -1.
Es obligatorio utilizar la función @divisores(k)@ proporcionada a continuación para conocer la cantidad de divisores de un número.
def divisores(k):
'''
k es un entero mayor que cero
>>> sorted(divisores(12))
[1, 2, 3, 4, 6, 12]
'''
lista_div = [1]
if k != 1:
lista_div.append(k)
i = 2
while i*i < k:
if k % i == 0:
lista_div.append(i)
lista_div.append(k//i)
i += 1
if k == i*i:
lista_div.append(i)
return lista_div
>>> pos_muchos_divisores(6, [6, 3, 4, 3, 14, 12 ,15, 14]) 5 >>> pos_muchos_divisores(1, [13, 15, 13, 15, 13 ,15]) -1 >>> pos_muchos_divisores(2, [3, 2, 1]) 0 >>> pos_muchos_divisores(1, [3, 2, 1]) 2 >>> pos_muchos_divisores(0, [1]) -1