a(n) = { if (n==0, return (0), my (b=vector(hammingweight(n))); for (i=1, #b, n-=2^b[i]=valuation(n,2); ); my (d=vector(#b-1, i, b[i+1]-b[i])); d /= max(1, gcd(d)); my (t=vecsum(d), u=1, v=1); for (i=1, #d, u = u*2^d[i]+1; v = v*2^d[#d+1-i]+1; ); min(u,v); ); } for (n=0, 2^16, print (n " " a(n))) quit