Páginas

Números amigos en C++

Programa C++ que comprueba si dos números son amigos.
 
Dos números enteros positivos A, B se consideran amigos cuando la suma de los divisores propios de A es igual a B y la suma de los divisors propios de B es igual a A.
 
Por ejemplo, los números 220 y 284 son números amigos. 
Los disisores de 220 son: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110. La suma de los divisores de 220 es 284. 
Los divisores de 284 son: 1, 2, 4, 71 y 142. La suma de los divisores de 284 es 220.

Para comprobar si dos números son amigos solo intervienen los divisores propios. Los divisores propios no incluyen al propio número.
 
/* 
 *
 * Programa C++
 * Comprobar si dos números son amigos  
 *
 */
#include <iostream>
using namespace std;
int main()
{
    //declaración de variables
    int i,suma,a,b;
	
    //introducir los números por teclado                                                                          
    cout << "Introduce primer numero:";
    cin >> a;
    cout << "Introduce segundo numero: ";
    cin >> b;
	
    //comprobar si son amigos
    suma=0;                  //variable para guardar la suma de los divisores
    for(i=1;i<a;i++)         //i son todos los posibles divisores de a excepto él mismo
    {
        if(a%i==0)           //si i es divisor de a
        {
           suma=suma+i;      //se suma el divisor
        }
    }
    if(suma==b)              //si la suma de los divisores de a es igual a b
    {
       suma=0;
       for(i=1;i<b;i++)      //i son todos los posibles divisores de b excepto él mismo
       {
           if(b%i==0)        //si i es divisor de b
           {
              suma=suma+i;   //se suma el divisor
           }
       }
       if(suma==a)           //si la suma de los divisores de b es igual a a
          cout << endl << "Amigos" << endl;
       else
          cout << endl << "No son amigos" << endl;
    }
    else                     //si la suma de los divisores de a no es igual a b
    {
       cout << endl << "No son amigos" << endl;
    }
    system("pause");
}

1 comentario: