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:
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.