gcd 0 0 = 0
Michael Ackerman
[email protected]
Tue, 18 Dec 2001 15:54:13 -0800
The general meaning of `having a prime factorization' is that every
non-zero element is uniquely a product of a unit and a product of
primes. The algebraic structures where unique factorizations live are
`unique factorization domains' (UFDs) of which a central class is formed
by the ring of polynomials over a field. Here the non-zero elements of
the field are the units; no one has ever suggested calling them primes!
In a general UFD one can only speak of _a_ gcd of two elements x and y,
meaning an element d such that one has (x, y) = (d), an equality of
ideals. In some special cases, there is a natural choice for d (e.g., in
the integers, the non-negative d; in the ring of polynomials over a
field, the monic d (having leading coeff. 1)). In some UFDs there is no
canonical choice (e.g. in the Gaussian integers, a + ib for a, b integers).
gcd(0, 0) = 0.
Cheers,
Michael Ackerman
Dylan Thurston wrote:
>
> On Tue, Dec 18, 2001 at 06:00:30PM +0100, Kent Karlsson wrote:
> > Why? If EVERY natural number is to have a prime factorisation, then BOTH
> > 0 AND 1 have to be promoted to prime numbers;
>
> 1 has a perfectly fine prime factorization. It is the product of 0 primes,
> the null product. (A null product is defined, for very good reasons, to
> be 1, just like a null sum is defined to be 0.)
>
> I could see defences of calling 0 a prime, although it is not standard
> mathematical practice. The ideal generated by 0 is a prime ideal,
> for one thing. 0 would still not have a unique prime factorization,
> however. (But Haskell should not unilaterally decide to violate standard
> mathematical terminology!)
>
> > ... But
> > there is a fundamental reason to say that 0 can never be a divisor (i.e. 0|0
> > is false; x|y is true iff x is a *non-zero* factor of y; the 'non-zero' part
> > is often left implicit (e.g. one is only talking about strictly positive
> > integers), which is part of the reason why we are having this discussion).
>
> What fundamental reason do you have in mind? Why do you use this definition
> of divisibility? (I'm curious; other mathematicians give the same
> definition, and I can't see why.)
>
> This thread made me curious, so I did a little library research. I was
> surprised to discover that mathematicians discover on this, the domain
> of definition of "gcd a b":
>
> Domain References
> ------ ----------
> a /= 0, b /= 0 Lang, "Algebra, 3rd Edition"
> Hasse, "Number Theory"
>
> a, b not both 0 Koblitz, "A Course on Number Theory and Cryptography"
>
> all a, b allowed MacLane and Birkhoff, "Algebra, 2nd Edition"
> Koch, "Number Theory"
>
> At least the books by Lang and MacLane-Birkhoff are standard references.
> Note that the definitions all agree when they are defined (with gcd 0 0 = 0).
>
> As I said, I was surprised; to me, the definiton with all a and b is the
> more natural one. I still recommend using the full domain (especially since
> exceptions are awkward to deal with in Haskell), but I'm not as certain.
>
> Best,
> Dylan Thurston
>
> _______________________________________________
> Haskell mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell