%I #25 Oct 23 2024 00:42:46
%S 1,1,2,1,2,3,1,3,4,4,1,3,4,4,5,1,3,5,5,6,6,1,3,5,5,6,6,7,1,4,6,6,7,7,
%T 8,8,1,4,7,7,8,8,9,9,9,1,4,7,7,9,9,10,10,10,10,1,4,7,7,9,9,10,10,10,
%U 10,11,1,4,8,8,10,10,11,11,11,11,12,12,1,4,8,8,10,10,11,11,11,11,12,12,13,1,4
%N Triangle T(n,k) = number of k-smooth numbers <= n, read by rows.
%C T(n,n-1) = A014684(n) for n>1;
%C T(n,2) = A029837(n) for n>1; T(n,3) = A071521(n) for n>2; T(n,5) = A071520(n) for n>4.
%C A036234(n) = number of distinct terms in n-th row. - _Reinhard Zumkeller_, Sep 17 2013
%H Reinhard Zumkeller, <a href="/A080786/b080786.txt">Rows n=1..120 of triangle, flattened</a>
%H Eric Weisstein's World of Mathematics, <a href="http://mathworld.wolfram.com/SmoothNumber.html">Smooth Number</a>.
%e Triangle begins:
%e .................. 1
%e ................ 1...2
%e .............. 1...2...3
%e ............ 1...3...4...4
%e .......... 1...3...4...4...5
%e ........ 1...3...5...5...6...6
%e ...... 1...3...5...5...6...6...7
%e .... 1...4...6...6...7...7...8...8
%e .. 1...4...7...7...8...8...9...9...9.
%p A080786 := proc(x,y)
%p local a,n ;
%p a := 0 ;
%p for n from 1 to x do
%p if A006530(n) <= y then
%p a := a+1 ;
%p end if;
%p end do:
%p a ;
%p end proc: # _R. J. Mathar_, Aug 31 2013
%t P[n_] := FactorInteger[n][[-1, 1]]; P[1]=1; T[n_, k_] := (For[j=0; m=1, m <= n, m++, If[P[m] <= k, j++]]; j); Table[T[n, k], {n, 1, 15}, {k, 1, n}] // Flatten (* _Jean-François Alcover_, Nov 22 2015 *)
%o (Haskell)
%o a080786 n k = a080786_tabl !! (n-1) !! (k-1)
%o a080786_row n = a080786_tabl !! (n-1)
%o a080786_tabl = map reverse $ iterate f [1] where
%o f xs@(x:_) = (x + 1) :
%o (zipWith (+) xs (map (fromEnum . (lpf <=)) [x, x-1 ..]))
%o where lpf = fromInteger $ a006530 $ fromIntegral (x + 1)
%o -- _Reinhard Zumkeller_, Sep 17 2013
%o (Python)
%o from itertools import count, islice
%o from sympy import prevprime, integer_log
%o def A080786_T(n,k):
%o if k==1: return 1
%o def g(x,m): return x.bit_length() if m==2 else sum(g(x//(m**i),prevprime(m))for i in range(integer_log(x,m)[0]+1))
%o return g(n,prevprime(k+1))
%o def A080786_gen(): # generator of terms
%o return (A080786_T(n,k) for n in count(1) for k in range(1,n+1))
%o A080786_list = list(islice(A080786_gen(),100)) # _Chai Wah Wu_, Oct 22 2024
%Y Cf. A000079, A002473, A003586, A006530, A014684, A029837, A036234, A051037, A051038, A071520, A071521, A080197, A080681, A080682, A080683.
%K nonn,tabl
%O 1,3
%A _Reinhard Zumkeller_, Mar 12 2003