s2Eva_IIT2002_T1 Verificar si es «Número perfecto»

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

ejercicios resueltos Python final_iit2002_t1 pdf

ejercicios resueltos Matlab final_iit2002_t1 pdf