Multiplying and Factoring Polynomials