{ File: mcd3.pas }

{ Scopo: cicli indefiniti
         conrollo sui dati in ingresso }

program MassimoComunDivisore;
{ Legge due numeri interi positivi e calcola il massimo comun divisore.
  Utilizza l'algoritmo di Euclide nella versione senza resti.
  Effettua un controllo sulla validita` dei due numeri letti. }

var
  a, b : integer;

begin
  repeat
    write('Due interi positivi ? ');
    readln(a, b);
    if (a <= 0) or ( b <= 0) then
      writeln('Errore: i numeri devono essere maggiori di 0');
  until (a > 0) and (b > 0);

  { la stampa del messaggio che utilizza i valori iniziali a e b deve essere
    fatta prima del calcolo in quanto tali valori  vanno perduti }
  write('Massimo comun divisore di ', a, ' e ', b, ' : ');

  while a <> b do
    if a > b then
      a := a - b
    else
      b := b - a;

  writeln(a)
end. { MassimoComunDivisore }