login
Smallest number beginning with 2 and having exactly n prime divisors counted with multiplicity.
2

%I #7 Sep 12 2024 19:22:35

%S 2,21,20,24,200,216,288,256,2592,2304,2048,20736,20480,24576,204800,

%T 221184,294912,262144,2654208,2359296,2097152,21233664,20971520,

%U 25165824,209715200,226492416,201326592,268435456,2013265920,2415919104

%N Smallest number beginning with 2 and having exactly n prime divisors counted with multiplicity.

%e a(1) = 2, a(5) = 200 = 2^3*5^2.

%o (Python)

%o from itertools import count

%o from math import isqrt, prod

%o from sympy import primerange, integer_nthroot, primepi

%o def A106422(n):

%o if n == 1: return 2

%o 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 def f(x): return int(sum(primepi(x//prod(c[1] for c in a))-a[-1][0] for a in g(x,0,1,1,n)))

%o for l in count(len(str(1<<n))-1):

%o kmin, kmax = 2*10**l-1, 3*10**l-1

%o mmin, mmax = f(kmin), f(kmax)

%o if mmax>mmin:

%o while kmax-kmin > 1:

%o kmid = kmax+kmin>>1

%o mmid = f(kmid)

%o if mmid > mmin:

%o kmax, mmax = kmid, mmid

%o else:

%o kmin, mmin = kmid, mmid

%o return kmax # _Chai Wah Wu_, Sep 12 2024

%Y Cf. A077326-A077334, A106411-A106419, A106421-A106429.

%K base,nonn

%O 1,1

%A _Ray Chandler_, May 02 2005