Source: http://mathematiques.ac-bordeaux.fr/lycee2010/tice_algorithmique/activites/transversales/transversales_cor.pdf