is(n) = #binary(n)==2*hammingweight(n) a(n) = { if (n>1 && hammingweight(n)==1, -1, my (low=2, high=3); while (1, \\ adjust high..low so that k*n has even binary length my (alow=low, ahigh=high); if (#binary(low*n)%2, alow = ceil(2^(#binary(high*n)-1)/n), #binary(high*n)%2, ahigh = (2^#binary(low*n)-1)\n, ); for (k=alow, ahigh, if (is(k) && is(k*n), return (k); ); ); low = low*4; high = high*4+3; ); ); } for (n=1, 2^16, print (n " " a(n))) quit