A003309 Ludic numbers: apply the same sieve as Eratosthenes, but cross off every k-th remaining number.
1, 2, 3, 5, 7, 11, 13, 17, 23, 25, 29, 37, 41, 43, 47, 53, 61, 67, 71, 77, 83, 89, 91, 97, 107, 115, 119, 121, 127, 131, 143, 149, 157, 161, 173, 175, 179, 181, 193, 209, 211, 221, 223, 227, 233, 235, 239, 247, 257, 265, 277, 283, 287, 301, 307, 313
Offset: 1
References
- N. J. A. Sloane and Simon Plouffe, The Encyclopedia of Integer Sequences, Academic Press, 1995 (includes this sequence).
Links
- Donovan Johnson, Table of n, a(n) for n = 1..100000
- David Applegate, C program for A003309.
- Donovan Johnson, Ludic numbers computed up to A003309(1236290) = 23000711.
- OEIS Wiki, Ludic numbers.
- Popular Computing (Calabasas, CA), Sieves: Problem 43, Vol. 2 (No. 13, Apr 1974), pp. 6-7. This is Sieve #1. [Annotated and scanned copy]
- Rosettacode Wiki, Ludic numbers.
- Index entries for sequences generated by sieves
Crossrefs
Cf. A192490 (characteristic function).
Cf. A192607 (complement).
Cf. A260723 (first differences).
Subsequence of A302036.
Cf. A237056, A237126, A237427, A235491, A255407, A255408, A255421, A255422, A260435, A260436, A260741, A260742 (permutations constructed from Ludic numbers).
Programs
-
Haskell
a003309 n = a003309_list !! (n - 1) a003309_list = 1 : f [2..] :: [Int] where f (x:xs) = x : f (map snd [(u, v) | (u, v) <- zip [1..] xs, mod u x > 0]) -- Reinhard Zumkeller, Feb 10 2014, Jul 03 2011
-
Maple
ludic:= proc(N) local i, k,S,R; S:= {$2..N}; R:= 1; while nops(S) > 0 do k:= S[1]; R:= R,k; S:= subsop(seq(1+k*j=NULL, j=0..floor((nops(S)-1)/k)),S); od: [R]; end proc: ludic(1000); # Robert Israel, Feb 23 2015
-
Mathematica
t = Range[2, 400]; r = {1}; While[Length[t] > 0, k = First[t]; AppendTo[r, k]; t = Drop[t, {1, -1, k}];]; r (* Ray Chandler, Dec 02 2004 *)
-
PARI
t=vector(399,x,x+1); r=[1]; while(length(t)>0, k=t[1];r=concat(r,[k]);t=vector((length(t)*(k-1))\k,x,t[(x*k+k-2)\(k-1)])); r \\ Phil Carmody, Feb 07 2007
-
PARI
A3309=[1]; next_A003309(n)=n
n && break); n+!if(n=setsearch(A3309,n+1,1),return(A3309[n])) \\ Should be made more efficient if n >> max(A3309). - M. F. Hasler, Nov 02 2024 {A003309(n) = while(n>#A3309, next_A003309(A3309[#A3309])); A3309[n]} \\ Should be made more efficient in case n >> #A3309. - M. F. Hasler, Nov 03 2024 -
PARI
upto(nn)= my(r=List([1..nn]), p=1); while(p++<#r, my(k=r[p], i=p); while((i+=k)<=#r, listpop(~r, i); i--)); Vec(r); \\ Ruud H.G. van Tol, Dec 13 2024
-
Python
remainders = [0] ludics = [2] N_MAX = 313 for i in range(3, N_MAX) : ludic_index = 0 while ludic_index < len(ludics) : ludic = ludics[ludic_index] remainder = remainders[ludic_index] remainders[ludic_index] = (remainder + 1) % ludic if remainders[ludic_index] == 0 : break ludic_index += 1 if ludic_index == len(ludics) : remainders.append(0) ludics.append(i) ludics = [1] + ludics print(ludics) # Alexandre Herrera, Aug 10 2023
-
Python
def A003309(): # generator of the infinite list of ludic numbers L = [2, 3]; yield 1; yield 2; yield 3 while k := len(L)//2: # could take min{k | k >= L[-1-k]-1} for j in L[-1-k::-1]: k += 1 + k//(j-1) L.append(k+2); yield k+2 A003309_upto = lambda N=99: [t for t,_ in zip(A003309(),range(N))] # M. F. Hasler, Nov 02 2024
-
Scheme
(define (A003309 n) (if (= 1 n) n (A255127bi (- n 1) 1))) ;; Code for A255127bi given in A255127. ;; Antti Karttunen, Feb 23 2015
Formula
From Antti Karttunen, Feb 23 2015: (Start)
(End)
Extensions
More terms from David Applegate and N. J. A. Sloane, Nov 23 2004
Comments