Darker pixel = longer Euclidean algorithm to find GCD(x,y). Here x & y range from 1 to 500. So many questions… pic.twitter.com/k8N6jiGxSd
— Matt Enlow (@CmonMattTHINK) September 24, 2014
I saw this toot by Matt yesterday morning and I loved the visual of the color based on the number of steps of Euclid’s GCD algorithm. The algorithm is pretty straightforward and it’s a nice example for either using recursion or using a loop. The coloring is fun to mess with too. The coding went quickly for me because I already had the code for breaking a 1D pixel array (why processing??) into x and y coordinates.
There’s two variations:
Here’s the link for the GCD steps version.

And here’s the link for the GCD version where the closer the GCD is to the minimum of x and y, the more white the pixel is.

Here’s the recursive algorithm:
int euclidGCD(int x, int y)
{
if (y == 0)
{
return x;
}
else if (x >= y && y > 0)
{
return euclidGCD(y,(x%y));
}
else
{
return euclidGCD(y,x);
}
}
Here’s the loop algorithm to count the number of steps:
int euclidGCDsteps(int x, int y)
{
int t;
int steps = 0;
if (x >= y)
{
while (y != 0)
{
t = y;
y = x % y;
x += t;
steps++;
}
}
else
{
return euclidGCDsteps(y,x);
}
return steps;
}