\\ zeckendorf representation tozeck(n, base=10) = { for (k=2, oo, if (fibonacci(k)>=n, my (v=0); while (n, if (n>=fibonacci(k), v+=base^(k-2); n-=fibonacci(k); k--; ); k--; ); return (v); ); ); } prof(n) = my (z=tozeck(n, 2)); #binary(z) + hammingweight(z)*I mx = fibonacci(21)-1 pp = Set(apply(prof, [0..mx])) vv = vector(#pp, n, []) nb = vector(#pp) for (n=0, mx, i=setsearch(pp, prof(n)); vv[i]=concat(vv[i], n); nb[i]++) for (n=0, mx, i=setsearch(pp, prof(n)); print (n " " v=vv[i][nb[i]]); nb[i]--) quit