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.
%I A120049 #17 Mar 18 2025 13:35:15 %S A120049 0,0,0,7,105,1418,17572,207207,2367507,26483012,291646797,3173159326, %T A120049 34192782745,365561221293,3882841742380,41015564702074, %U A120049 431227959019552,4515480975731045,47115876816676830 %N A120049 Number of 8-almost primes less than or equal to 10^n. %e A120049 There are 7 eight-almost primes up to 1000: 256, 384, 576, 640, 864, 896 & 960. %t A120049 AlmostPrimePi[k_Integer, n_] := Module[{a, i}, a[0] = 1; If[k == 1, PrimePi[n], Sum[PrimePi[n/Times @@ Prime[Array[a, k - 1]]] - a[k - 1] + 1, Evaluate[ Sequence @@ Table[{a[i], a[i - 1], PrimePi[(n/Times @@ Prime[Array[a, i - 1]])^(1/(k - i + 1))]}, {i, k - 1}]]]]]; (* _Eric W. Weisstein_, Feb 07 2006 *) %t A120049 Table[AlmostPrimePi[8, 10^n], {n, 12}] %o A120049 (Python) %o A120049 from math import prod, isqrt %o A120049 from sympy import primerange, integer_nthroot, primepi %o A120049 def A120049(n): %o A120049 def g(x,a,b,c,m): yield from (((d,) for d in enumerate(primerange(b,isqrt(x//c)+1),a)) if m==2 else (((a2,b2),)+d for a2,b2 in enumerate(primerange(b,integer_nthroot(x//c,m)[0]+1),a) for d in g(x,a2,b2,c*b2,m-1))) %o A120049 return int(sum(primepi(10**n//prod(c[1] for c in a))-a[-1][0] for a in g(10**n,0,1,1,8))) # _Chai Wah Wu_, Aug 23 2024 %Y A120049 Cf. A066265, A014613, A116382. %Y A120049 Cf. A006880, A036352, A109251, A114106, A114453, A120047, A120048, A120049, A120050, A120051, A120052, A120053, A116430. %K A120049 nonn %O A120049 0,4 %A A120049 _Robert G. Wilson v_, Feb 07 2006 %E A120049 a(13)-a(14) from _Robert G. Wilson v_, Jan 07 2007 %E A120049 Example corrected by _Harvey P. Dale_, Aug 13 2018 %E A120049 a(15)-a(18) from _Henri Lifchitz_, Mar 18 2025