Source: https://www.arnoal.org/acmathpage/resources/Lycee/TS/TS-Cours/Ts_2016_Algo_ModeleSuite.pdf