Il est aisé de remarquer que si a1, a2, ... an sont les affixes des centres des cercles Cn alors |a1| = |a2| = ... = |an| = r.
On peut alors montrer que (i j) a pour affixe ai + aj, que le cercle (i j k) a pour centre ai + aj + ak puis que le point ( i j k l) a pour affixe ai + aj + ak + al etc...
Les points d'intersection sont de couleur noire (utiliser alternativement les boutons -> et <- pour bien les visualiser) et les cercles de couleur aléatoire.
Les cercles Cn sont de couleur jaune, ils se coupent au centre O du repère du plan complexe.
On peut bouger à la souris les centres des cercles Cn , ils sont de couleur rouge.
Remarque : le programme est récursif, il peut atteindre, s'il n'y a pas de saturation de mémoire avant, un temps de calcul extrêmement long. De plus j'ai utilisé la technique du "double-buffering" très gourmande en mémoire si l'image est grande (typiquement 3 octets par pixel en 16.7 millions de couleurs) ; cette technique consiste à écrire dans une zone de mémoire qu'on affiche ensuite à l'écran : cela simplifie beaucoup la programmation.