Source: https://kalonji972.free.fr/maths/5emes/Cours/5ALG 01NC_ENCHOP.pdf