Se dice que dos números a y b son "amigos si cada uno de ellos es la suma de los
divisores del otro.
Por ejemplo, los más pequeños son 220 y 284; comprobémoslo:Divisores De(220) = (1, 2,
4, 5, 10, 11, 20, 22, 44, 55, 110)
Suma DivDe(220) = 284
DivisoresDe(284) = (1,2,4,71, 142)
SumaDivDe(284) =220
Mediante el uso de funciones realice una solución que permita imprimir en pantalla los
números amigos existentes entre 1 y un número dado (ej. 10000)
Adjuntar archivo de código fuente de Python (py) con la solución.​

Respuestas

Respuesta dada por: GabCh
2

Respuesta:

def sumaDe(num):

   x = 0

   for i in range(1, num):

       if num % i == 0 and i != num:

           print(i)

           x += i

   return x

z = int(input("Número dado "))

nums = []

for i in range(1, z):

   for j in range(1, z):

       if i == sumaDe(j) and j == sumaDe(i) and i != j:

           nums.append(i)

print(nums)

Explicación:

Aunque es un código muy ineficiente porque básicamente lo que hace es iterar z veces z, que vendría a ser el número dado, para comparar cada número desde 1 hasta z, con todos los números desde 1 hasta z, y en cada iteración se evalúa dos veces si la suma de un divisor es igual al otro número e inversamente, la suma de los divisores de un número también implica una iteración desde 1 hasta ese número, lo que lo hace más ineficiente aún.

Preguntas similares