

A003312


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


8



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
(list;
graph;
refs;
listen;
history;
text;
internal format)



OFFSET

1,1


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.


REFERENCES

Popular Computing (Calabasas, CA), Problem 43, Sieves, sieve #5, Vol. 2 (No. 13, Apr 1974), pp. 67; 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).


LINKS

Popular Computing (Calabasas, CA), Sieves: Problem 43, Vol. 2 (No. 13, Apr 1974), pp. 67. This is Sieve #5. [Annotated and scanned copy]


EXAMPLE

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 ...


MAPLE

f:=proc(n) option remember; if n=1 then RETURN(3) fi; f(n1)+floor( (f(n1)1)/2 ); end;


MATHEMATICA



PROG

(PARI) v=vector(100); v[1]=3; for(n=2, #v, v[n]=floor((3*v[n1]1)/2)); v \\ Clark Kimberling, Dec 30 2010
(Haskell)
a003312 n = a003312_list !! (n1)
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)
(Python)
l=[0, 3]
for n in range(2, 101):
l.append(l[n  1] + (l[n  1]  1)//2)
(Python)
from itertools import islice
def A003312_gen(): # generator of terms
a = 3
while True:
yield a
a += a1>>1


CROSSREFS



KEYWORD

nonn,easy,nice


AUTHOR



EXTENSIONS



STATUS

approved



