s = 0 unseen = 1 seen(v) = bit test(s, v) see(v) = s = bit or(s, 2^v); while (seen(unseen), unseen++) other(n) = { my (x=if (n < 2, 1, a[ floor(n/2) ])); for (v=unseen, oo, if (!seen(v) && gcd(x,v)==1, see(v); return (v); ); ); } { a = vector(10 000); for (n=1, #a, a[n] = other(n); print (n " " a[n]); ); quit }