/* ESER03.CPP - Calcolo MCD(a,b) tramite gli algoritmi di Euclide */ #include #include #include void main(void) { int step; long int a, b, r, x, y; char risposta; do { clrscr(); gotoxy(32,1); printf("CALCOLO MCD(a,b)\n\n"); printf("Numero a: "); scanf("%ld", &a); printf("Numero b: "); scanf("%ld", &b); a = abs(a); b = abs(b); x = a; y = b; step = 0; while (b) { r = a%b; a = b; b = r; ++step; } printf("\nDivisioni successive: MCD(a,b) = %ld\n", a); printf("Numero step = %d\n", step); step = 0; while (x != y) { if (x > y) x -= y; else y -= x; ++step; } printf("\nSottrazioni successive: MCD(a,b) = %ld\n", x); printf("Numero step = %d\n", step); printf("\nAltri calcoli (s/n)? "); risposta = getche(); } while (risposta == 115); } /* ***************************** Outputs ****************************** */