Número de divisores X22956


Statement
 

pdf   zip

html

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
Sample session
>>> 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
Information
Author
InfBesos
Language
Spanish
Official solutions
Python
User solutions
Python