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/* Programa que calcula si dos numeros naturales dados son amigos
--------------------------------------------------------------
Dos números amigos son dos enteros positivos a y b tales que a es la suma
de los divisores propios de b y b es la suma de los divisores propios de a.
La unidad se considera divisor propio, pero no el propio número. */
#include <iostream>
using namespace std;
int main (void)
{
unsigned int numeroA = 0, numeroB = 0;
bool sonAmigos = false;
cout << "--- Programa que calcula si dos numeros naturales dados son amigos ---\n\n";
cout << "Introduce el valor del primer numero (> 1): ";
while (numeroA <= 1)
{
cin >> numeroA;
}
cout << "Introduce el valor del segundo numero (> 1): ";
while (numeroB <= 1)
{
cin >> numeroB;
}
unsigned int sumaDivisoresA = 0, sumaDivisoresB = 0;
for (int i = 1; i < (numeroA / 2); i++)
{
if (numeroA % i == 0)
sumaDivisoresA += i;
}
for (int i = 1; i < (numeroB / 2); i++)
{
if (numeroB % i == 0)
sumaDivisoresB += i;
}
if (numeroA == sumaDivisoresB)
{
if (numeroB == sumaDivisoresA)
sonAmigos = true;
}
cout << "\nLa suma de los divisores propios de " << numeroA << " es " << sumaDivisoresA << ".";
cout << "\nLa suma de los divisores propios de " << numeroB << " es " << sumaDivisoresB << ".";
if (sonAmigos)
cout << "\n\n" << numeroA << " y " << numeroB << " SON amigos.";
else
cout << "\n\n" << numeroA << " y " << numeroB << " NO son amigos.";
return 0;
}