Buongiorno, sto avendo numerosi problemi con un codice relativo al Massimo Comune divisore tra due numeri usando il metodo di Euclide: Quando il programma arriva al ciclo do while si blocca e non riesco a capire perchè.
Riporto di seguito il codice:

#include <iostream>
using namespace std;
int main(){

int a1, b1;
cout<<"Inserire il primo numero"<<"\n";
cin>>a1;

int d=a1;

cout<<"Inserisci il secondo numero "<<"\n";
cin>>b1;

do {

if(a1>b1) a1=a1-b1;
else if(a1<b1) a1=b1-a1;


} while(a1!=b1);


cout<<"Il MCD e' "<<a1<<"\n";

int mcm=(d*b1)/a1;
cout<<"Il mcm e' "<<mcm<<"\n";


system("pause");

}