# gcd 0 0 = 0

**Alan Bawden
**
Alan@LCS.MIT.EDU

*Thu, 13 Dec 2001 22:55:31 -0500 (EST)*

From: "S.D.Mechveliani" <mechvel@math.botik.ru>
Date: Thu, 13 Dec 2001 12:53:32 +0300
Further, the definintion
> gcd(x, y) to be the smallest
> z >= 0 such that {m*x + n*y | m, n in Z} = {n*z | n in Z}
is not natural. In particular, how does it generalize to gcd X Y
for polynomials in X, Y with rational coefficients?
Well, that -is- the way gcd is defined in the commutative algebra textbook
I used in graduate school -- I just specialized the definition for the case
of the ring of integers, and so I didn't mention that Z was a principle
ideal domain. Polynomials in two variables aren't a PID, so yes, you'd
have to restore some things I left out. When I said my definition was
"general" I suppose I should have anticipated someone would generalize in a
way I hadn't intended... (Actually, that definition doesn't even
generalize exactly to the Gaussian Integers, where "z >= 0" would have to
be replaced by some specification of a region of the complex plane.)
...
Probably, the best specification would be
gcd n m :: Integer = if n == 0 && m == 0 then 0
else
greatest integer that divides both n and m
Fortunately, we all seem to agree on what the actual definition should be.
I did make a mistake in my previous message. I said that it was nice that
gcd(0, x) = x for all x. I should have said: gcd(0, x) = abs(x).