Tema

Numeros Amistosos

0 respuestas 4036 visitas

Dejo planteado un problema para programar. A ver si se copan con distintos lenguajes.

REALICE EL SIGUIENTE PROGRAMA:
Dos números enteros positivos y distintos m y n
se dicen amistosos si la suma de los divisores de
m (excluido m) es igual a n y a su vez la suma de
los divisores de n (excluido el n) es igual a m.
Desarrolle un programa Java que a partir de dos
números ingresados verifique si estos son
amistosos.
— Observación: El programa debe verificar que los
números sean positivos y distintos. Si no lo son,
entonces debe pedirse de nuevo el ingreso de los
números (sin terminar el programa), hasta que el
usuario ingrese los números correctos.

Dejo una posible implementación en Python:

check = 0
    while check==0:
        n, m = input("Ingrese el primer numero: "), input("Ingrese el segundo numero: ")
        if n>0 and m>0 and n!=m:
            check = 1   
        else:
            check = 0               
    while check==1:
        def divisores(numero):
            divisores = []
            for i in range(1,numero):
                if numero%i==0:
                 divisores.append(i)
            return divisores
       
        dn, dm = divisores(n), divisores(m)
        suman, sumam = 0, 0
        for x in dn:
            suman+=x
        for y in dm:
            sumam+=y
        if suman==m and sumam==n:
            print n , "y" , m , "son amistosos" 
        else:
            print n , "y" , m , "no son amistosos"         
        check = -1
    raw_input("Presione cualquier tecla para salir...")     
Firma

"What we observe is not nature itself, but nature exposed to our method of questioning..."
Werner Heisenberg
ubuntu-user.php?user=28693