Curso de introducción a la programación con Python¶

    Autor: Luis Fernando Apáez Álvarez
    -Curso PyM-
    Clase extra: Números perfectos
    Fecha: 10 de Septiembre del 2022


Un número $n\in \mathbb{N}$ es perfecto si es la suma de todos sus divisores (excepto él mismo). Por ejemplo, el número 6 es perfecto pues la suma de sus divisores da como resultado

$$ 1+2+3=6 $$

Otro ejemplo es el número 28 pues

$$ 1+2+4+7+14=28 $$

Ahora bien, lo que realizaremos será una función que nos diga si un número es perfecto o no, para ello

  1. Crearemos una lista (deniminada divisores) que contenga todos los divisores del número en cuestión
  2. Efectuaremos la suma de todos los elementos de divisores de modo que, si el resultado de ellos da el número en cuestión, entonces éste es un número perfecto.
In [5]:
# comenzaremos trabajando con el número 6
x = 6

# creamos la lista de divisores

divisores = []

# agregamos elementos a divisores utilizando la operación de módulo(%)

for i in range(1,x - 1):
    if x % i == 0:
        divisores.append(i)
        
print(divisores)
[1, 2, 3]
In [6]:
# sumamos los elementos de dicha lista

sum(divisores)
Out[6]:
6
In [7]:
# aplicamos un if para decidir si el número es perfecto o no
if sum(divisores) == x:
    print("El número", x, "es un número perfecto")
else:
    print("El número", x, "NO es un número perfecto")
El número 6 es un número perfecto
In [9]:
# Finalmente conjuntamos el código para crear nuestra función:

def numPerfecto(x):
    # creamos la lista de divisores

    divisores = []

    # agregamos elementos a divisores utilizando la operación de módulo(%)

    for i in range(1,x - 1):
        if x % i == 0:
            divisores.append(i)
        
    # aplicamos un if para decidir si el número es perfecto o no
    if sum(divisores) == x:
        print("El número", x, "es un número perfecto")
    else:
        print("El número", x, "NO es un número perfecto")
In [13]:
# probamos nuestra función

numPerfecto(6)
numPerfecto(28)
numPerfecto(54)
numPerfecto(33550336)
El número 6 es un número perfecto
El número 28 es un número perfecto
El número 54 NO es un número perfecto
El número 33550336 es un número perfecto