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

Valid XHTML 1.0! - Il link č esterno Valid css! - Il link č esterno

Torna all'home page C++