Algoritmia - programa que a través del uso de una función determine si dos números son amigos

 
Vista:

programa que a través del uso de una función determine si dos números son amigos

Publicado por camila (1 intervención) el 22/10/2020 02:32:30
A través de una función realizar:(pseint)
1-Dos números son amigos si cada uno de ellos es igual a la suma de los divisores del otro. Por ejemplo 220 y 284 son amigos ya que:
Suma de divisores de 284= 1 + 2 + 4 + 71 + 142 = 220
Suma de divisores de 220 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Escriba un programa que a través del uso de una función determine si dos números ingresados por el usuario son amigos o no.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 84
Bronce
Ha mantenido su posición en Algoritmia (en relación al último mes)
Gráfica de Algoritmia

programa que a través del uso de una función determine si dos números son amigos

Publicado por Rodrigo (27 intervenciones) el 22/10/2020 16:54:23
No se si construir una funcion auxiliar esta permitido en tu solucion, pero parece util hacer primero una funcion que calcule la suma de los divisores de un numero (sin considerar el numero mismo), e invocar esta en la solucion de los numeros amigos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pedro
Val: 3
Ha aumentado su posición en 4 puestos en Algoritmia (en relación al último mes)
Gráfica de Algoritmia

programa que a través del uso de una función determine si dos números son amigos

Publicado por Pedro (1 intervención) el 22/10/2020 19:23:01
Yo haría dos funciones:
son_amigos(a, b): la cual para los dos valores calcula los divisores y comprueba que la suma de ambos es igual que a o que b respectivamente
obtener_divisores: a la que se le pasa un número y se obtiene la lista de divisores de ese número

En python sería algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import math
 
def obtener_divisores(n):
    large_divisors = []
    for i in xrange(1, int(math.sqrt(n) + 1)):
        if n % i == 0:
            yield i
            if i*i != n and i != 1:
                large_divisors.append(n / i)
    for divisor in reversed(large_divisors):
        yield divisor
 
def son_amigos(a, b):
    a_divisores = obtener_divisores(a)
    if sum(a_divisores) == b:
        b_divisores = obtener_divisores(b)
        return sum(b_divisores) == a
 
    return False
 
assert son_amigos(220, 284) is True

Espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

programa que a través del uso de una función determine si dos números son amigos

Publicado por Nacho (1 intervención) el 23/10/2020 21:48:45
Cuando tengas la función desarrollada pásale como parámetro un array con los indios aquéllos de:
- Capitán, capitán, vienen los indios.
- ¿Son amigos o enemigos?
- Amigos, vienen todos juntos....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar