Fractional ideals make the ideals into a group
Ordinary ideals multiply, but they have no inverses — you can't divide. The fix is to enlarge: a [[fractional-ideal|fractional ideal]] of O_K is a nonzero finitely generated O_K-submodule of K, equivalently (1/d)·I for an ordinary ideal I and some d in O_K. In a Dedekind domain every nonzero fractional ideal is invertible: its inverse is { x in K : x·a ⊆ O_K }. So the nonzero fractional ideals form an abelian group J_K under multiplication, with identity O_K.
By unique factorization of ideals, J_K is in fact the free abelian group on the prime ideals: every fractional ideal is a finite product ∏ p^(n_p) with integer exponents n_p (negative exponents allowed). This makes computation in J_K bookkeeping with exponent vectors.
Quotient by the principal ideals: the class group
Inside J_K sit the principal fractional ideals P_K = { (x) : x in K* }, which form a subgroup (since (x)(y) = (xy)). The quotient Cl(K) = J_K / P_K is the [[ideal-class-group|ideal class group]]. Two ideals are in the same class iff they differ by multiplication by a principal ideal — i.e. iff a = (x)·b for some x in K. This is a quotient-style construction, but of groups.
Finiteness and a worked class-number computation
The deep theorem is that Cl(K) is finite — proved via the Minkowski bound, a geometry-of-numbers estimate guaranteeing every ideal class contains an integral ideal of norm at most M_K. So to find Cl(K) you only factor the finitely many primes p ≤ M_K and track the classes of the prime ideals above them.
- Compute the Minkowski bound M_K from the discriminant and the number of real/complex embeddings.
- List all rational primes p ≤ M_K; factor each (p) into prime ideals of O_K.
- Cl(K) is generated by the classes of these prime ideals; find relations among them by spotting principal ideals (small-norm elements).
K = Q(sqrt(-5)), O_K = Z[sqrt(-5)], disc = -20. Minkowski bound M_K = (4/pi) * sqrt(20) / 4 ≈ 2.84. ==> only need primes p <= 2, i.e. p = 2. Factor (2): x^2+5 ≡ x^2+1 ≡ (x+1)^2 (mod 2) ==> (2) = p^2 with p = (2, 1+sqrt(-5)). Is p principal? If p = (a+b sqrt(-5)) then N(p) = 2 = a^2+5b^2, which has no integer solution. So p is NON-principal: [p] != 1. But p^2 = (2) is principal, so [p]^2 = 1 in Cl(K). Cl(K) is generated by [p] of order 2. ==> Cl(Q(sqrt(-5))) ≅ Z/2Z, class number h_K = 2. Reading: h_K = 2 != 1 confirms Z[sqrt(-5)] is NOT a UFD, exactly matching the 6 = 2*3 = (1+s)(1-s) failure.