Ejercicio: 2Eva2002TII_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.
Algoritmo 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
>>>