cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A008935 If 2n = Sum 2^e(k) then a(n) = Sum e(k)^2.

Original entry on oeis.org

1, 4, 5, 9, 10, 13, 14, 16, 17, 20, 21, 25, 26, 29, 30, 25, 26, 29, 30, 34, 35, 38, 39, 41, 42, 45, 46, 50, 51, 54, 55, 36, 37, 40, 41, 45, 46, 49, 50, 52, 53, 56, 57, 61, 62, 65, 66, 61, 62, 65, 66, 70, 71, 74, 75, 77, 78, 81, 82, 86, 87, 90, 91, 49, 50, 53, 54, 58, 59, 62
Offset: 1

Views

Author

Keywords

Examples

			To get a(5), we write 10 = 2 + 8 = 2^1 + 2^3 so a(5) = 1^2 + 3^2 = 10.
		

Crossrefs

Gives A003995 if sorted and duplicates removed.

Programs

  • C
    #include 
    #include 
    #define USAGE "Usage: 'A008935 num'\n where num is the index of the desired ending value in the sequence.\n"
    #define MAX 1023
    #define SHIFT_MAX 9
    int main(int argc, char *argv[]) { unsigned short mask, i, j, end; unsigned long sum; if (argc < 2) { fprintf(stderr, USAGE); return EXIT_FAILURE; } end = atoi(argv[1]); end = (end >= MAX) ? MAX : end;
    fprintf(stdout, "Values: "); for (i = 1; i <= end; i++) { sum = 0; mask = 1; for (j = 0; j < SHIFT_MAX; j++, mask *= 2) if (i & mask) sum += (j+1) * (j+1); fprintf(stdout, "%ld", sum); if (i < end) fprintf(stdout, ","); } fprintf(stdout, "\n"); return EXIT_SUCCESS; }
    
  • Haskell
    a008935 = f 1 where
       f k x | x == 0    = 0
             | r == 0    = f (k+1) x'
             | otherwise = k^2 + f (k+1) x' where (x',r) = divMod x 2
    -- Reinhard Zumkeller, Jul 05 2011
    
  • Maple
    a:= n-> (l-> add(l[i]*i^2, i=1..nops(l)))(convert(n, base, 2)):
    seq(a(n), n=1..80);  # Alois P. Heinz, Nov 20 2019
  • Mathematica
    a[n_] := Total[Flatten[Position[Reverse[IntegerDigits[n, 2]], 1]]^2]; Table[a[n],{n,1,70}] (* Jean-François Alcover  Mar 21 2011 *)
  • Python
    a = lambda n: sum(((k+1)**2) * ((n >> k) & 1) for k in range(0, n.bit_length()))
    print([a(n) for n in range(1,68)]) # Darío Clavijo, Dec 27 2024

Formula

G.f.: 1/(1-x) * Sum_{k>=0} (k+1)^2*x^2^k/(1+x^2^k). - Ralf Stephan, Jun 23 2003

Extensions

Corrected and extended by Larry Reeves (larryr(AT)acm.org), Mar 22 2000