Source: http://www.lsv.fr/~villard/agreg/tp/pgcd/enonce.pdf