Ask Your Question

Revision history [back]

The ring of integers of the 23rd cyclotomic field is famously not a unique factorisation domain.

One thing you can do is factor the ideal generated by 2.

sage: K = CyclotomicField(23) sage: L = K.ring_of_integers() sage: two = L.ideal(2) sage: two.factor() (Fractional ideal (2, zeta23^11 + zeta23^9 + zeta23^7 + zeta23^6 + zeta23^5 + zeta23 + 1)) * (Fractional ideal (2, zeta23^11 + zeta23^10 + zeta23^6 + zeta23^5 + zeta23^4 + zeta23^2 + 1))

The ring of integers of the 23rd cyclotomic field is famously not a unique factorisation domain.

One thing you can do is factor the ideal generated by 2.

sage: K = CyclotomicField(23)
sage: L = K.ring_of_integers()
sage: two = L.ideal(2)
sage: two.factor()
(Fractional ideal (2, zeta23^11 + zeta23^9 + zeta23^7 + zeta23^6 + zeta23^5 + zeta23 + 1)) * (Fractional ideal (2, zeta23^11 + zeta23^10 + zeta23^6 + zeta23^5 + zeta23^4 + zeta23^2 + 1))

1))

The ring of integers of the 23rd cyclotomic field is famously not a unique factorisation domain.

Once you have defined the cyclotomic field and its ring of integers,

sage: K = CyclotomicField(23)
sage: L = K.ring_of_integers()

the ring of integers does not have a factor method, as you noticed.

Its elements however do have such a method, but trying to factor L(2) hangs:

sage: L(2).factor()

and you have to interrupt it with Ctrl C.

One thing you can do is factor the ideal generated by 2.

sage: K = CyclotomicField(23)
sage: L = K.ring_of_integers()
sage: two = L.ideal(2)
sage: two.factor()
(Fractional ideal (2, zeta23^11 + zeta23^9 + zeta23^7 + zeta23^6 + zeta23^5 + zeta23 + 1)) * (Fractional ideal (2, zeta23^11 + zeta23^10 + zeta23^6 + zeta23^5 + zeta23^4 + zeta23^2 + 1))