Factoring and Solving Polynomials