|
|
A153733
|
|
Remove all trailing 1's in the binary representation of n.
|
|
6
|
|
|
0, 0, 2, 0, 4, 2, 6, 0, 8, 4, 10, 2, 12, 6, 14, 0, 16, 8, 18, 4, 20, 10, 22, 2, 24, 12, 26, 6, 28, 14, 30, 0, 32, 16, 34, 8, 36, 18, 38, 4, 40, 20, 42, 10, 44, 22, 46, 2, 48, 24, 50, 12, 52, 26, 54, 6, 56, 28, 58, 14, 60, 30, 62, 0, 64, 32, 66, 16, 68, 34, 70, 8, 72, 36, 74, 18, 76, 38
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
0,3
|
|
COMMENTS
|
|
|
LINKS
|
|
|
FORMULA
|
a(n) = n if n is even, a((n-1)/2) if odd.
|
|
MAPLE
|
f:= n -> (n+1)/2^padic:-ordp(n+1, 2)-1:
|
|
MATHEMATICA
|
Table[If[EvenQ[n], n, FromDigits[Flatten[Most[Split[IntegerDigits[n, 2]]]], 2]], {n, 0, 100}] (* Harvey P. Dale, Feb 15 2014 *)
a[n_] := BitShiftRight[n + 1, IntegerExponent[n+1, 2]] - 1; a[Range[0, 100]] (* Federico Provvedi, Dec 21 2021 *)
|
|
PROG
|
(Haskell)
a153733 n = if b == 0 then n else a153733 n' where (n', b) = divMod n 2
(PARI) A153733(n)=(n+=1)>>valuation(n, 2)-1 \\ most efficient variant: use this.
(PARI) {a(n)=while(bittest(n, 0), n>>=1); n} \\ for illustration: as long as there's a trailing bit 1, remove it.
(PARI) a(n)=for(i=0, n, bittest(n, i)||return(n>>i)) \\ scan the trailing 1's, then remove all of them at once. (End)
(Python)
def a(n):
while n&1: n >>= 1
return n
(Python)
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn,easy
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|