Check a Perfect Number in Python
28 = 1 + 2 + 4 + 7 + 14. Find all proper divisors and check whether they add up to the number.
- Proper divisors
- Summing divisors with a comprehension
- Faster checks up to √n
Add the divisors except the number itself
Un número perfecto es igual a la suma de sus divisores positivos, sin contarse a sí mismo. Por ejemplo, los divisores de 28 son 1, 2, 4, 7 y 14, y 1 + 2 + 4 + 7 + 14 = 28, así que 28 es un número perfecto.
Puntos clave
- Proper divisors are those smaller than n that divide it exactly.
sum(d for d in range(1, n) if n % d == 0)adds them.- If the sum equals n, it is perfect: 6, 28, 496, 8128.
¿Cuándo se usa?
- Aprender la sintaxis y los conceptos básicos de Python con ejemplos cortos y fáciles de entender.
- Construir una base sólida antes de pasar a problemas más complejos.
- Ejecutar el código directamente en el navegador, sin instalar Python en el ordenador.
Código de ejemplo
number = 28
# Proper divisors cannot be larger than half the number.
divisors = [value for value in range(1, number // 2 + 1) if number % value == 0]
result = "is" if sum(divisors) == number else "is not"
print(f"{number} {result} a perfect number")
Resultado de la ejecución
28 is a perfect number
Explicación del código
La comprensión de listas recorre los números de 1 a number // 2 y conserva los que dividen a number. Basta con llegar hasta la mitad de number, porque ningún divisor propio es mayor que esa mitad. Si la suma de los divisores es igual a number, el programa muestra 28 is a perfect number.
Cambia los valores y ejecuta el programa en el compilador Python online de CodeUtility sin instalar Python.
Ejercicios de práctica
Prueba a modificar el código siguiendo las ideas de abajo. Cambiar el código y ver el resultado te ayudará a entender la lección mucho mejor que solo leerla.
- Cambia los datos de entrada y predice el resultado antes de ejecutar.
- Añade una comprobación para datos vacíos o no válidos.
- Pasa el proceso a una función aparte y pruébala con varios conjuntos de datos.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
Todos los retos