┌────────────────────────────────────────────────────────────────────┐ │ Sage Version 6.0, Release Date: 2013-12-17 │ │ Type "notebook()" for the browser-based notebook interface. │ │ Type "help()" for help. │ └────────────────────────────────────────────────────────────────────┘ sage: sage: sage: n = 3*5*7 sage: n 105 sage: K = CyclotomicField(n) sage: K.degree() 48 sage: p = 3 sage: K.factor(p) (Fractional ideal (3, -3*zeta105^40 + zeta105^12 - zeta105^11 - zeta105^10 + zeta105^9 - zeta105^8 + zeta105^7 - 2*zeta105^5 - zeta105^4 + zeta105^2 + 1))^2 * (Fractional ideal (3, -3*zeta105^40 + zeta105^12 + zeta105^10 - zeta105^8 + zeta105^7 - 2*zeta105^5 - zeta105^4 + zeta105^3 - zeta105^2 + 2*zeta105 + 1))^2 sage: list(K.factor(p)) [(Fractional ideal (3, -3*zeta105^40 + zeta105^12 - zeta105^11 - zeta105^10 + zeta105^9 - zeta105^8 + zeta105^7 - 2*zeta105^5 - zeta105^4 + zeta105^2 + 1), 2), (Fractional ideal (3, -3*zeta105^40 + zeta105^12 + zeta105^10 - zeta105^8 + zeta105^7 - 2*zeta105^5 - zeta105^4 + zeta105^3 - zeta105^2 + 2*zeta105 + 1), 2)] sage: I = K.factor(p)[0][0] sage: I Fractional ideal (3, -3*zeta105^40 + zeta105^12 - zeta105^11 - zeta105^10 + zeta105^9 - zeta105^8 + zeta105^7 - 2*zeta105^5 - zeta105^4 + zeta105^2 + 1) sage: I.residue_field() Residue field in zeta105bar of Fractional ideal (3, -3*zeta105^40 + zeta105^12 - zeta105^11 - zeta105^10 + zeta105^9 - zeta105^8 + zeta105^7 - 2*zeta105^5 - zeta105^4 + zeta105^2 + 1) sage: I.residue_field().cardinality() 531441 sage: 531441.factor() 3^12 sage: f_p1_p = 12 sage: e_p1_p = 2 sage: J = K.factor(p)[1][0] sage: J.residue_field().cardinality().factor() 3^12 sage: 12*2+12*2==48 True sage: log(3^12) log(531441) sage: log(3^12).n() 13.1833474640173 sage: log(3^12,3) 12 sage: sum(log(I[0].residue_field().cardinality(), p)* I[1] for I in K.factor(p)) 48 sage: p = 5 sage: sum(log(I[0].residue_field().cardinality(), p)* I[1] for I in K.factor(p)) 48 sage: K.factor(2) (Fractional ideal (2, zeta105^12 + zeta105^10 + zeta105^9 + zeta105^7 + zeta105^6 + zeta105^4 + 1)) * (Fractional ideal (2, zeta105^12 + zeta105^11 + zeta105^9 + zeta105^8 + zeta105^7 + zeta105^3 + 1)) * (Fractional ideal (2, -2*zeta105^40 + zeta105^12 + zeta105^9 - zeta105^5 + zeta105^4 + zeta105^3 + zeta105 + 1)) * (Fractional ideal (2, zeta105^12 + zeta105^8 + zeta105^6 + zeta105^5 - zeta105^3 + zeta105^2 + 1)) sage: K.discriminant().factor() 3^24 * 5^36 * 7^40 sage: L = QQ[2^(1/3)] sage: L.degree() 3 sage: L.factor(2) (Fractional ideal (a))^3 sage: L.discriminant() -108 sage: 108.factor( ....: ) 2^2 * 3^3 sage: L.factor(3) (Fractional ideal (a + 1))^3 sage: