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

%I #11 Sep 12 2024 19:57:45

%S 3,33,30,36,32,324,320,384,3200,3456,3072,31104,30720,36864,32768,

%T 331776,327680,393216,3276800,3538944,3145728,31850496,31457280,

%U 37748736,33554432,339738624,301989888,3057647616,3019898880,3623878656

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

%H Robert Israel, <a href="/A106423/b106423.txt">Table of n, a(n) for n = 1..3303</a>

%e a(1) = 3, a(6) = 324 = 2^2*3^4.

%p f:= proc(n) uses priqueue; local pq, t,p,x,i;

%p initialize(pq);

%p insert([-2^n,2$n],pq);

%p do

%p t:= extract(pq);

%p x:= -t[1];

%p if floor(x/10^ilog10(x)) = 3 then return x fi;

%p p:= nextprime(t[-1]);

%p for i from n+1 to 2 by -1 while t[i] = t[-1] do

%p insert([t[1]*(p/t[-1])^(n+2-i), op(t[2..i-1]),p$(n+2-i)],pq)

%p od;

%p od

%p end proc:

%p map(f, [$1..50]); # _Robert Israel_, Sep 06 2024

%o (Python)

%o from itertools import count

%o from math import isqrt, prod

%o from sympy import primerange, integer_nthroot, primepi

%o def A106423(n):

%o if n == 1: return 3

%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 = 3*10**l-1, 4*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