%I #44 Sep 16 2024 14:46:43
%S 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,24,25,26,27,28,30,
%T 32,33,35,36,39,40,42,44,45,48,49,50,52,54,55,56,60,63,64,65,66,70,72,
%U 75,77,78,80,81,84,88,90,91,96,98,99,100,104,105,108,110,112,117,120
%N 13-smooth numbers: numbers whose prime divisors are all <= 13.
%C Numbers of the form 2^r*3^s*5^t*7^u*11^v*13^w with r, s, t, u, v, w >= 0.
%H Michael De Vlieger, <a href="/A080197/b080197.txt">Table of n, a(n) for n = 1..10000</a>
%F Sum_{n>=1} 1/a(n) = Product_{primes p <= 13} p/(p-1) = (2*3*5*7*11*13)/(1*2*4*6*10*12) = 1001/192. - _Amiram Eldar_, Sep 22 2020
%e 33 = 3*11 and 39 = 3*13 are terms but 34 = 2*17 is not.
%t mx = 120; Sort@ Flatten@ Table[ 2^i*3^j*5^k*7^l*11^m*13^n, {i, 0, Log[2, mx]}, {j, 0, Log[3, mx/2^i]}, {k, 0, Log[5, mx/(2^i*3^j)]}, {l, 0, Log[7, mx/(2^i*3^j*5^k)]}, {m, 0, Log[11, mx/(2^i*3^j*5^k*7^l)]}, {n, 0, Log[13, mx/(2^i*3^j*5^k*7^l*11^m)]}] (* _Robert G. Wilson v_, Aug 17 2012 *)
%o (PARI) test(n)=m=n; forprime(p=2,13, while(m%p==0,m=m/p)); return(m==1)
%o for(n=1,200,if(test(n),print1(n",")))
%o (PARI) is_A080197(n,p=13)=n<=p||vecmax(factor(n,p+1)[,1])<=p \\ _M. F. Hasler_, Jan 16 2015
%o (PARI) list(lim,p=13)=if(p==2, return(powers(2, logint(lim\1,2)))); my(v=[],q=precprime(p-1),t=1); for(e=0,logint(lim\=1,p), v=concat(v, list(lim\t,q)*t); t*=p); Set(v) \\ _Charles R Greathouse IV_, Apr 16 2020
%o (Magma) [n: n in [1..150] | PrimeDivisors(n) subset PrimesUpTo(13)]; // _Bruno Berselli_, Sep 24 2012
%o (Python)
%o import heapq
%o from itertools import islice
%o from sympy import primerange
%o def agen(p=13): # generate all p-smooth terms
%o v, oldv, h, psmooth_primes, = 1, 0, [1], list(primerange(1, p+1))
%o while True:
%o v = heapq.heappop(h)
%o if v != oldv:
%o yield v
%o oldv = v
%o for p in psmooth_primes:
%o heapq.heappush(h, v*p)
%o print(list(islice(agen(), 69))) # _Michael S. Branicky_, Nov 20 2022
%o (Python)
%o from sympy import integer_log, prevprime
%o def A080197(n):
%o def bisection(f,kmin=0,kmax=1):
%o while f(kmax) > kmax: kmax <<= 1
%o while kmax-kmin > 1:
%o kmid = kmax+kmin>>1
%o if f(kmid) <= kmid:
%o kmax = kmid
%o else:
%o kmin = kmid
%o return kmax
%o def g(x,m): return sum((x//3**i).bit_length() for i in range(integer_log(x,3)[0]+1)) if m==3 else sum(g(x//(m**i),prevprime(m))for i in range(integer_log(x,m)[0]+1))
%o def f(x): return n+x-g(x,13)
%o return bisection(f,n,n) # _Chai Wah Wu_, Sep 16 2024
%Y Cf. A000079, A080196. For p-smooth numbers with other values of p, see A003586, A051037, A002473, A051038, A080681, A080682, A080683.
%K easy,nonn
%O 1,2
%A _Klaus Brockhaus_, Feb 10 2003