Introducción

Históricamente, el algoritmo de Euclides es un algoritmo geométrico de división de un rectángulo en cuadrados de lados decrecientes, sucesivamente de un lado y otro del rectángulo, para encontrar el cuadrado de lado mayor que permite teselar el rectángulo: es el mcd de las medidas (enteras) de los lados del rectángulo.

El procedimiento se llama antiferesis (sustracciones alternadas). En la figura anterior se ven dos cuadrados de lado 25, luego uno de lado 15, luego uno de 10 y dos de lado 5. El mcd de 65 y 25 es 5.

Mucho antes de que Python fuera el lenguaje enseñado en liceo, Guillaume Conan proponía el siguiente código, en marzo de 2012, con la tortuga de Python en la revista MathémaTICE. Hacemos notar que el criterio de salida de la recursividad es a=b porque el test del bucle mientras que es una desigualdad estricta. Asímismo, la tortuga no tiene que orientarse al comienzo según la forma del rectángulo, pues en ese algoritmo la abscisa siempre es la longitud del rectángulo. Como queremos hacer una figura dinámica, tendremos que parametrar un poco más esta "sustracción alternada".

En esencia, el algoritmo se construye como una sucesión de sustracciones, por eso el nombre griego de antiferesis. Se logra con el bucle "mientras que" en el corazón del algoritmo. Pero en un contexto de construcción en tiempo real de la trayectoria de la tortuga con respecto al desplazamiento de los bloques, es delicado construir un "mientras que" con los bloques de la tortuga de DGPad. Es la oportunidad para precisar cómo evitar esta dificultad, en una situación sutil de recursividad. En un primer momento, veremos el algoritmo con la división clásica, procedimiento eficaz, pero lejano al espíritu inicial de la sustracción.