Source: https://www.ceremade.dauphine.fr/~viossat/PDFs/algebre1/2010-11/polyTD-1011-entier.pdf