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.

A003312 a(1) = 3; for n>0, a(n+1) = a(n) + floor((a(n)-1)/2).

Original entry on oeis.org

3, 4, 5, 7, 10, 14, 20, 29, 43, 64, 95, 142, 212, 317, 475, 712, 1067, 1600, 2399, 3598, 5396, 8093, 12139, 18208, 27311, 40966, 61448, 92171, 138256, 207383, 311074, 466610, 699914, 1049870, 1574804, 2362205, 3543307, 5314960, 7972439, 11958658, 17937986, 26906978
Offset: 1

Views

Author

Keywords

Comments

This sequence was originally defined in Popular Computing in 1974 by a sieve, as follows. Write down the numbers from 3 to infinity. Take next number, M say, that has not been crossed off. Counting through the numbers that have not yet been crossed off after that M, cross off every third term. Repeat, always crossing off every third term of those that remain. The numbers that are left form the sequence. The recurrence given here for the sequence was found by Colin Mallows. The problem asked for the 1000th term, and was unsolved for several years.

Examples

			The first few sieving stages are as follows:
  3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
  3 4 5 X 7 8 X 10 11 XX 13 14 XX 16 17 XX 19 20 ...
  3 4 5 X 7 X X 10 11 XX XX 14 XX 16 XX XX 19 20 ...
  3 4 5 X 7 X X 10 XX XX XX 14 XX 16 XX XX XX 20 ...
  3 4 5 X 7 X X 10 XX XX XX 14 XX XX XX XX XX 20 ...
		

References

  • Popular Computing (Calabasas, CA), Problem 43, Sieves, sieve #5, Vol. 2 (No. 13, Apr 1974), pp. 6-7; Vol. 2 (No. 17, Aug 1974), page 16; Vol. 5 (No. 51, Jun 1977), p. 17.
  • N. J. A. Sloane and Simon Plouffe, The Encyclopedia of Integer Sequences, Academic Press, 1995 (includes this sequence).

Crossrefs

Programs

  • Haskell
    a003312 n = a003312_list !! (n-1)
    a003312_list = sieve [3..] where
       sieve :: [Integer] -> [Integer]
       sieve (x:xs) = x : (sieve $ xOff xs)
       xOff :: [Integer] -> [Integer]
       xOff (x:x':_:xs) = x : x': (xOff xs)
    -- Reinhard Zumkeller, Feb 21 2011
    
  • Maple
    f:=proc(n) option remember; if n=1 then RETURN(3) fi; f(n-1)+floor( (f(n-1)-1)/2 ); end;
  • Mathematica
    NestList[#+Floor[(#-1)/2]&,3,50]  (* Harvey P. Dale, Mar 18 2011 *)
  • PARI
    v=vector(100); v[1]=3; for(n=2, #v, v[n]=floor((3*v[n-1]-1)/2)); v \\ Clark Kimberling, Dec 30 2010
    
  • Python
    l=[0, 3]
    for n in range(2, 101):
        l.append(l[n - 1] + (l[n - 1] - 1)//2)
    print(l[1:]) # Indranil Ghosh, Jun 09 2017
    
  • Python
    from itertools import islice
    def A003312_gen(): # generator of terms
        a = 3
        while True:
            yield a
            a += a-1>>1
    A003312_list = list(islice(A003312_gen(),30)) # Chai Wah Wu, Sep 21 2022

Extensions

Entry revised by N. J. A. Sloane, Dec 01 2004 and May 10 2015