Source: https://web.northeastern.edu/dummit/teaching_sp20_3527/3527_lecture_29_polynomial_congruences.pdf