DEFA (NUMBER)  // алгоритм 50
{              // Наибольший делитель числа
  ALGORITHM
  DEF t
  {
     0     -> 0
     E1    -> 1
  }
  DEF f  // проверим делится ли E1 на E2
  {
     E1#E2 -> t(calc(E1%E2))
  }
  DEF A
  {
     0         -> calc(1/0)
     1         -> 1
     2         -> 1
     0#E1#E2   -> E2
     S1#E1#E2  -> A(f(E1#calc(E2-1))#E1#calc(E2-1))
     E1        -> A(f(E1#calc(E1!2+1))#E1#calc(E1!2+1))
  }
  TESTS
  even(1, 400);
}

