require "algebra"

P = Polynomial(Integer, "x")
x = P.var
f = 8*x**7 - 20*x**6 + 6*x**5 - 11*x**4 + 44*x**3 - 9*x**2 - 27
p f.factorize #=> (2x - 3)^3(x^2 + x + 1)^2


syntax highlighted by Code2HTML, v. 0.9.1