Ejercicio: 2Eva_IIT2002_T1 Número perfecto
Un número perfecto es aquel que es igual a la suma de todos sus divisores, con excepción del mismo.
Ejemplo: 6 es perfecto porque, sus divisores son: 1, 2, 3 (6 no se considera). 1+2+3=6
literal a. verificar mediante una función perfecto(n)
Se busca entre todos los números enteros i
entre 1 y n
, revisando el residuo entre n%i
. Si el residuo es cero, es divisible y se acumula en suma para verificar el número perfecto. Al final de la búsqueda si n==suma
se considera el número como perfecto.
Instrucciones en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL # 2Eva_IIT2002_T1 Número perfecto # Propuesta de solución: edelros@espol.edu.ec import numpy as np # literal a. funcion def perfecto(n): suma = 0 i = 1 while (i<n): residuo = n%i # Acumula solo si i es divisor if residuo == 0: suma = suma + i i = i + 1 if n == suma: esperfecto = 1 else: esperfecto = 0 return (esperfecto) # literal b. PROGRAMA ---------- # Nota, busca numeros perfectos entre [1,m] # INGRESO m = int(input('¿rango m? : ')) # PROCEDIMIENTO encontrado = np.zeros(m+1,dtype=int) k = 0 i = 1 while (i<=m): encontrado[i] = perfecto(i) i = i+1 # SALIDA i = 1 while (i<=m): if encontrado[i]==1: print(i) i=i+1
literal b. Listar números perfectos entre [1,m], consiste en crear una lista con todos los números que se verifican con la función creada en el literal a.
resultado del algoritmo
Nota: cambiando el enunciado, se busca números perfectos en el rango [1,m]
¿rango m? : 50 6 28 >>> ¿rango m? : 1000 6 28 496 >>> ¿rango m? : 10000 6 28 496 8128 >>>
Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf