Source: https://www.unilim.fr/pages_perso/patrick.poulingeas/Enseignements/2004_2005/L1/correctionTD5Algo1_1.pdf