Ci č stato richiesto di realizzare un algoritmo che dati due numeri in input dica se questi sono amicabili oppure no. Due numeri (a e b) sono amicabili quando a e' uguale alla somma dei divisori di b (escluso b stesso e incluso 1) e b e' uguale alla somma dei divisori di a (escluso b stesso e incluso 1). Abbiamo utilizzato l'istruzione % che produce il resto di una divisione e permette di confrontarlo.
Algoritmo:
#include <iostream.h>
int main()
{
int num[2];
int divisore;
int v[999999];
int conf;
int i;
int somma[3];
int div;
int g;
int h;
int z;
char sn;
do
{
g=0;
z=0;
do
{
z=z+1;
do
{
cout<<"Inserisci il"<< z <<"°numero superiore a 1"<<endl;
cin>>num[z];
}
while (num[z]<=1);
}
while (z<2);
do
{
conf=0;
g=g+1;
z=0;
divisore=num[g];
do
{
divisore=divisore-1;
}
while (num[g]%divisore!=0);
if (num[g]%2!=0)
{
(div=num[g]-1);
}
else
{
div=num[g];
}
conf=div/2;
i=0;
do
{
if (num[g]%conf==0)
{
i=i+1;
(v[i]=conf);
}
conf=conf-1;
}
while (conf!=0);
int l;
l=0;
somma[g]=0;
do
{
l=l+1;
somma[g]=somma[g]+v[l];
}
while (l!=i);
}
while (g!=2);
g=1;
if (g==1)
{
h=2;
}
else
{
h=1;
}
if ((somma[g]==num[h]) && (somma[h]==num[g]))
{
cout<<"I numeri sono amicabili"<<endl;
}
else
{
cout<<"I numeri NON sono amicabili"<<endl;
}
cout<<"Vuoi ripetere l'operazione?"<<endl;
cin>>sn;
}
while ((sn=='S') || (sn=='s'));
return 0;
}
Programma in formato cxx