def display_gcd(x,y): """ greatest common divisor of two integers - Euclid's algorithm Function prints all intermediate results along the way """ assert isinstance(x,int) and isinstance(y,int) # type checking: x and y both integers x,y=abs(x),abs(y) # simultaneous assignment to x and y # gcd invariant to abs. Both x,y now non-negativr if x0: x,y=y,x%y print(x,y) return x def gcd(x,y): """ greatest common divisor of two integers - Euclid's algorithm """ assert isinstance(x,int) and isinstance(y,int) # type checking: x and y both integers x,y=abs(x),abs(y) # simultaneous assignment to x and y # gcd invariant to abs. Both x,y now non-negativr if x0: x,y=y,x%y return x def slow_gcd(x,y): """ greatest common divisor of two integers - naive inefficient method """ assert isinstance(x,int) and isinstance(y,int) # type checking: x and y both integers x,y=abs(x),abs(y) # simultaneous assignment to x and y # gcd invariant to abs. Both x,y now non-negativr if x