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
divisores) que contenga todos los divisores del número en cuestióndivisores de modo que, si el resultado de ellos da el número en cuestión, entonces éste es un número perfecto.# 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]
# sumamos los elementos de dicha lista
sum(divisores)
6
# 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
# 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")
# 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