devo trovare il massimo comune divisore tra due numeri. ho provato a fare così ma non mi funziona. mi potreste dire dove sbaglio.

codice:
#include <stdio.h>
#include <conio.h>

int a, b, i, mcd;

main()
{
      printf("il primo numero e': ");
      scanf("%2d", &a);
      printf("il secondo numero e': ");
      scanf("%2d", &b);
      mcd=1;
      for(i=0;i<=a || b; i++)
       {
                   while(a%i==0 && b%i==0)
                    {
                               a=a/i;
                               b=b/i;
                               mcd=mcd*i;
                    }
       }
        printf("mcd e': %2d", mcd);
        getch();
}