login
Triangle read by rows, based on array described below.
6

%I #18 Apr 07 2023 05:25:17

%S 1,3,4,7,8,9,13,14,15,16,19,20,21,24,25,27,28,30,32,35,36,39,40,42,44,

%T 45,48,49,49,50,51,52,55,60,63,64,63,64,66,68,70,72,77,80,81,79,80,81,

%U 84,85,90,91,96,99,100,91,92,93,96,100,102,105,112,117,120,121

%N Triangle read by rows, based on array described below.

%C The interesting property of this array is that the main diagonal gives A000960.

%H G. C. Greubel, <a href="/A100452/b100452.txt">Rows n = 1..50 of the triangle, flattened</a>

%H H. Killingbergtro and C. U. Jensen, <a href="https://www.jstor.org/stable/24524630">Problem 116</a>, Nord. Mat. Tidskr. 5 (1957), 160-161.

%F Form an array a(m,n) (n >= 1, 1 <= m <= n) by: a(1,n) = n^2 for all n; a(m+1,n) = (n-m)*floor( (a(m,n)-1)/(n-m) ) for 1 <= m <= n-1.

%e Array begins:

%e 1 4 9 16 25 36 49 64 81 100 ...

%e 3 8 15 24 35 48 63 80 99 ...

%e 7 14 21 32 45 60 77 96 ...

%e 13 20 30 44 55 72 91 ...

%e 19 28 42 52 70 90 ...

%e and triangle begins:

%e 1

%e 3 4

%e 7 8 9

%e 13 14 15 16

%e 19 20 21 24 25

%e 27 28 30 32 35 36

%e ...

%t max=11; a[1, n_]:= n^2;

%t a[m_, n_]/; 1<m<=n := a[m, n]= (n-m+1)*Floor@((a[m-1, n] -1)/(n-m+1));

%t a[_, _]=0;

%t t= Table[a[m, n], {m,max}, {n,m,max}];

%t Flatten[Table[t[[m-n+1, n]], {m,max}, {n,m}]] (* _Jean-François Alcover_, Feb 21 2012 *)

%o (Magma)

%o function t(n,k) // t = A100452

%o if k eq 1 then return n^2;

%o else return (n-k+1)*Floor((t(n,k-1) -1)/(n-k+1));

%o end if;

%o end function;

%o [t(n,n-k+1): k in [1..n], n in [1..15]]; // _G. C. Greubel_, Apr 07 2023

%o (SageMath)

%o def t(n, k): # t = A100452

%o if (k==1): return n^2

%o else: return (n-k+1)*((t(n, k-1) -1)//(n-k+1))

%o flatten([[t(n, n-k+1) for k in range(1,n+1)] for n in range(1, 16)]) # _G. C. Greubel_, Apr 07 2023

%Y Cf. A000960, A100453.

%Y Column sums give A100454.

%Y Row 1 = A000290, row 2 = A000290 - 1, row 3 = A100451.

%Y See also A100461.

%K nonn,tabl,nice

%O 1,2

%A _N. J. A. Sloane_, Nov 22 2004