login
A276591
a(n) is the smallest prime p > a(n-1) such that p - a(n-1) is an (n-1)-almost prime; a(1) = 2.
1
2, 5, 11, 19, 43, 151, 311, 439, 823, 2551, 6007, 12919, 23159, 35447, 92791, 203383, 535159, 731767, 1124983, 5253751, 6302327, 16919159, 32647799, 103426679, 160049783, 285878903, 386542199, 1066019447, 1468672631, 2676632183, 5092551287, 16366840439, 32472967799
OFFSET
1,1
LINKS
EXAMPLE
a(2) - a(1) = 5 - 2 = 3, which is prime (a "1-almost prime");
a(3) - a(2) = 11 - 5 = 6 = 2*3, which is semiprime (2-almost prime).
PROG
(Python)
from itertools import count, islice
from math import prod, isqrt
from sympy import primerange, primepi, integer_nthroot, isprime
def almostprimepi(n, k):
if k==0: return int(n>=1)
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)))
return int(sum(primepi(n//prod(c[1] for c in a))-a[-1][0] for a in g(n, 0, 1, 1, k)) if k>1 else primepi(n))
def A276591_gen(): # generator of terms
yield (a:=2)
def bisection(f, kmin=0, kmax=1):
while f(kmax) > kmax: kmax <<= 1
kmin = kmax >> 1
while kmax-kmin > 1:
kmid = kmax+kmin>>1
if f(kmid) <= kmid:
kmax = kmid
else:
kmin = kmid
return kmax
for i in count(1):
def f(x): return j+x-almostprimepi(x, i)
for j in count(1):
p = bisection(f, j, j)+a
if isprime(p):
yield (a:=p)
break
A276591_list = list(islice(A276591_gen(), 30)) # Chai Wah Wu, Mar 29 2025
CROSSREFS
Sequence in context: A121606 A166164 A097008 * A051653 A106015 A178316
KEYWORD
nonn
AUTHOR
Zak Seidov, Nov 16 2016
EXTENSIONS
a(32)-a(33) from Jinyuan Wang, Jul 31 2021
STATUS
approved