p = vector(10 000); p[up++] = 1 c = vector(#p ); c[uc++] = 1 { for (v=2, oo, if (issquarefree(v), if (isprime(v), if (up < #p, p[up++] = v), if (uc < #c, c[uc++] = v) ); if (up == #p && uc == #c, break; ); ); ); sf = setunion(p, c); for (n=1, #p, x = setsearch(p, sf[n]); print (n " " if (x, c[x], p[setsearch(c, sf[n])])); ); } quit