Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/04/2010, 08:33
jbourne
 
Fecha de Ingreso: abril-2010
Mensajes: 11
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: No se como hacer este algoritmo

El código está en c++, pero creo que te puede ayudar.

Por supuesto se puede complicar hasta el infinito, pero es una solución a lo que pides.

Código C++:
Ver original
  1. /* Programa que calcula si dos numeros naturales dados son amigos
  2.    --------------------------------------------------------------
  3.    Dos números amigos son dos enteros positivos a y b tales que a es la suma
  4.    de los divisores propios de b y b es la suma de los divisores propios de a.
  5.    La unidad se considera divisor propio, pero no el propio número. */
  6.  
  7. #include <iostream>
  8.  
  9. using namespace std;
  10.  
  11. int main (void)
  12. {
  13.     unsigned int numeroA = 0, numeroB = 0;
  14.     bool sonAmigos = false;
  15.  
  16.     cout << "--- Programa que calcula si dos numeros naturales dados son amigos ---\n\n";
  17.  
  18.     cout << "Introduce el valor del primer numero (> 1): ";
  19.     while (numeroA <= 1)
  20.     {
  21.         cin >> numeroA;
  22.         fflush (stdin);
  23.     }
  24.  
  25.     cout << "Introduce el valor del segundo numero (> 1): ";
  26.     while (numeroB <= 1)
  27.     {
  28.         cin >> numeroB;
  29.         fflush (stdin);
  30.     }
  31.  
  32.     unsigned int sumaDivisoresA = 0, sumaDivisoresB = 0;
  33.  
  34.     for (int i = 1; i < (numeroA / 2); i++)
  35.     {
  36.         if (numeroA % i == 0)
  37.             sumaDivisoresA += i;
  38.     }
  39.  
  40.     for (int i = 1; i < (numeroB / 2); i++)
  41.     {
  42.         if (numeroB % i == 0)
  43.             sumaDivisoresB += i;
  44.     }
  45.  
  46.  
  47.     if (numeroA == sumaDivisoresB)
  48.     {
  49.         if (numeroB == sumaDivisoresA)
  50.             sonAmigos = true;
  51.     }
  52.  
  53.     cout << "\nLa suma de los divisores propios de " << numeroA << " es " << sumaDivisoresA << ".";
  54.     cout << "\nLa suma de los divisores propios de " << numeroB << " es " << sumaDivisoresB << ".";
  55.  
  56.     if (sonAmigos)
  57.         cout << "\n\n" << numeroA << " y " << numeroB << " SON amigos.";
  58.     else
  59.         cout << "\n\n" << numeroA << " y " << numeroB << " NO son amigos.";
  60.  
  61.     return 0;
  62. }