sage: sage: L=CyclotomicField(23, 'z') sage: z = L.gen() sage: # we now compute square root of the discriminant sage: sqrtD = prod(z^i-z^j for i in range(0, 22) for j in range(i+1, 22)) sage: a = -z*sqrtD/23^10 sage: a 2*z^18 + 2*z^16 + 2*z^13 + 2*z^12 + 2*z^9 + 2*z^8 + 2*z^6 + 2*z^4 + 2*z^3 + 2*z^2 + 2*z + 1 sage: a^2 -23 sage: K = L.subfield(a)[0] sage: K Number Field in z0 with defining polynomial x^2 + 23 sage: K.factor(3) (Fractional ideal (3, 1/2*z0 - 1/2)) * (Fractional ideal (3, 1/2*z0 + 1/2)) sage: p = K.factor(3)[0][0] sage: L.factor(p) Fractional ideal (3, z^11 - z^8 - z^6 + z^4 + z^3 - z^2 - z - 1) sage: L.factor(K.factor(5)[0][0]) Fractional ideal (5) sage: L.factor(K.factor(23)[0][0]) (Fractional ideal (23, z - 1))^11 sage: L.factor(K.factor(29)[0][0]) Fractional ideal (29, z^11 + 11*z^10 + 8*z^9 - 4*z^8 - 14*z^7 + 6*z^6 + 10*z^5 - 7*z^4 + 4*z^3 + 13*z^2 + 10*z - 1) sage: