A293230 a(n) is the number of integers k in range [2^n, (2^(n+1))-1] such that all terms in finite sequence [k, floor(k/2), floor(k/4), floor(k/8), ..., 1] are squarefree.
1, 2, 3, 5, 7, 9, 12, 15, 19, 26, 35, 49, 66, 84, 114, 151, 204, 272, 354, 470, 619, 820, 1109, 1499, 2009, 2710, 3631, 4872, 6554, 8831, 11821, 15875, 21364, 28611, 38389, 51611, 69295, 93144, 125290, 168220, 226048, 303727, 408170, 548513, 736900, 990222, 1330212, 1787067, 2401254, 3226802, 4335590, 5825258
Offset: 0
Keywords
Examples
In range [2^0 .. (2^1)-1] = [1], all terms (namely 1) are in A293430, thus a(0) = 1. In range [2^1 .. (2^2)-1] = [2 .. 3] all terms are in A293430, thus a(1) = 2. In range [2^2 .. (2^3)-1] = [4 .. 7] the terms 5, 6, 7 are in A293430 (because they themselves are squarefree and when applying x -> floor(x/2) to them, give either 2 or 3, numbers that are also included in A293430), thus a(2) = 3.
Crossrefs
Programs
-
Mathematica
Table[Count[Range[2^n, (2^(n + 1)) - 1], ?(AllTrue[Table[Floor[#/2^e], {e, 0, n}], SquareFreeQ] &)], {n, 0, 20}] (* _Michael De Vlieger, Oct 10 2017 *)
-
PARI
\\ A naive algorithm that computes A293233, A293430 and A293230 at the same time: allocatemem(2^30); up_to_level = 23; up_to = (2^(1+up_to_level))-1; v293233 = vector(up_to); v293233[1] = 1; write("b293430.txt", 1, " ", 1); countsA293230 = 1; kA293430 = 2; for(n=2,up_to,if(!bitand(n,n-1), print1(countsA293230,", "); countsA293230 = 0); v293233[n] = moebius(n)* v293233[n\2];if(v293233[n],write("b293430.txt", kA293430, " ", n); kA293430++; countsA293230++)); print1(countsA293230);
-
PARI
\\ Much faster algorithm: allocatemem(2^30); next_living_bud_or_zero(n) = if(issquarefree(n),n,0); nextA293230generation(tops) = { my(new_tops = vecsort(vector(2*#tops,i,next_living_bud_or_zero((2*tops[(i+1)\2])+(i%2))),,8)); if(0==new_tops[1], vector(#new_tops-1,i,new_tops[1+i]), new_tops); } tops_of_tree = [1]; write("b293230.txt", 0, " ", 1); print1(1, ", "); for(n=1,64,tops_of_tree = nextA293230generation(tops_of_tree); write("b293230.txt", n, " ", k = length(tops_of_tree)); print1(k, ", "));
Comments