OFFSET
1,2
COMMENTS
It appears that this sequence is obtained when ordering Schreier sets as explained in the Bird link. See decM(n) PARI code. - Michel Marcus, May 31 2024
That is correct since the binary representation of these numbers can be put into 1-to-1 correspondence with Schreier sets, which satisfy |X| <= min X, using the indicator function of X as the bits (starting from the right, LSB). The reason is that A000120 then computes |X| and A001511 computes min X. For example, the Schreier set X = {2, 5} can be mapped to 10010_2 = 18. - Michael S. Branicky, May 31 2024
From David A. Corneth, May 31 2024: (Start)
If k is in the sequence then so is 2*k.
a(A000045(k)) = 2^(k-2) for k >= 2. (End)
Apart from a(1), all terms are even. - Paolo Xausa, May 31 2024
LINKS
Michel Marcus, Table of n, a(n) for n = 1..10945
Alistair Bird, Jozef Schreier, Schreier sets and the Fibonacci sequence, Out Of The Norm blog, May 13 2012.
FORMULA
MATHEMATICA
Join[{1}, Select[Range[2, 1000, 2], DigitCount[#, 2, 1] <= IntegerExponent[#, 2] + 1 &]] (* Paolo Xausa, May 31 2024 *)
PROG
(PARI) isok(n) = hammingweight(n) <= (valuation(n, 2) + 1)
(PARI) b1(n) = if(n == 0, 0, my(A = 0); forstep(i = logint(n, 2), 0, -1, if(A >= i, break); if(bittest(n, i), A++)); (n >> A)*(1 << A))
upto(n, m) = my(A = b1(m), B, v1); v1 = vector(n, i, 0); for(i = 1, n, B = hammingweight(A) - 1; A += 2^(B - (A/2^B)%2 + 1); v1[i] = A); v1 \\ first n terms greater than m \\ [verification needed]
(PARI) Zeckendorf(n) = my(A = n, B1, B2, C, m = 1, v1); v1 = [n > 0]; while(fibonacci(m+1) <= n, m++); m--; B1 = fibonacci(m+1); B2 = fibonacci(m); A -= B1; while(m > 1, m--; C = 0; if(A >= B2, A -= B2; C = 1); [B1, B2] = [B2, B1 - B2]; v1 = concat(v1, C)); v1
a(n) = my(v1); v1 = Zeckendorf(n); for(i = 2, #v1, if(v1[i], v1 = concat(vector(#v1-1, j, v1[j + (j >= (i-1))]), 0))); fromdigits(v1, 2) \\ [verification needed]
(PARI) M(n) = my(list=List()); for (i=1, n, forsubset(i, s, my(bOk = if (#s && (vecmax(s) == n), #s <= vecmin(s), 0)); if (bOk, listput(list, vecsort(Vec(s), , 4))); ); ); Vec(list);
decM(nn) = my(v = vector(nn, k, M(k)), list=List()); for (i=1, #v, my(vi = v[i]); for (j=1, #vi, my(s = vecsort(vi[j]), slist=List(), m = vecmax(s)); forstep(k=m, 1, -1, listput(slist, sign(vecsearch(s, k)))); listput(list, fromdigits(Vec(slist), 2)); ); ); vecsort(Vec(list)); \\ Michel Marcus, May 31 2024
(Python)
def ok(n): return n.bit_count() <= (-n&n).bit_length()
print([k for k in range(1, 300) if ok(k)]) # Michael S. Branicky, May 31 2024
(Python) # Assuming the list starts with 0.
def a():
n = na = nb = 1
while True:
yield not(nb < (na - 1) << 1)
nb, na = na, n.bit_count()
n += 1
aList = a(); print([n for n in range(77) if next(aList)]) # Peter Luschny, Jun 07 2024
CROSSREFS
KEYWORD
nonn,base
AUTHOR
Mikhail Kurkov, Mar 14 2024
STATUS
approved