%I #13 Oct 29 2022 10:52:24
%S 1,1,1,1,1,1,1,2,6,1,1,2,48,168,1,1,4,96,11232,20160,1,1,2,480,86016,
%T 24261120,9999360,1,1,6,288,1488000,1321205760,475566474240,
%U 20158709760,1,1,4,2016,1886976,116064000000,335522845163520,84129611558952960,163849992929280,1
%N Array read by antidiagonals: T(n,k) is the order of the group GL(n,Z_k).
%C All rows are multiplicative.
%C Equivalently, the number of invertible n X n matrices mod k.
%C Also, for k prime (but not higher prime powers) the number of nonsingular n X n matrices over GF(k).
%C For k >= 2, n! divides T(n,k) since the subgroup of GL(n,k) consisting of all permutation matrices is isomorphic to S_n (the n-th symmetric group). Note that a permutation matrix is an orthogonal matrix, hence having determinant +-1. - _Jianing Song_, Oct 29 2022
%H R. P. Brent and B. D. McKay, <a href="https://doi.org/10.1016/0012-365X(87)90117-8">Determinants and ranks of random matrices over Zm</a>, Discrete Mathematics 66 (1987) pp. 35-49.
%H J. M. Lockhart and W. P. Wardlaw, <a href="https://www.jstor.org/stable/27643029">Determinants of Matrices over the Integers Modulo m</a>, Mathematics Magazine, Vol. 80, No. 3 (Jun., 2007), pp. 207-214.
%H The Group Properties Wiki, <a href="https://groupprops.subwiki.org/wiki/Order_formulas_for_linear_groups">Order formulas for linear groups</a>
%F T(n,p^e) = (p^e)^(n^2) * Product_{j=1..n} (1 - 1/p^j) for prime p.
%e Array begins:
%e =================================================================
%e n\k| 1 2 3 4 5 6
%e ---+-------------------------------------------------------------
%e 0 | 1 1 1 1 1 1 ...
%e 1 | 1 1 2 2 4 2 ...
%e 2 | 1 6 48 96 480 288 ...
%e 3 | 1 168 11232 86016 1488000 1886976 ...
%e 4 | 1 20160 24261120 1321205760 116064000000 489104179200 ...
%e 5 | 1 9999360 ...
%e ...
%t T[_, 1] = T[0, _] = 1; T[n_, k_] := T[n, k] = Module[{f = FactorInteger[k], p, e}, If[Length[f] == 1, {p, e} = f[[1]]; (p^e)^(n^2)* Product[(1 - 1/p^j), {j, 1, n}], Times @@ (T[n, Power @@ #]& /@ f)]];
%t Table[T[n - k + 1, k], {n, 0, 8}, {k, n + 1, 1, -1}] // Flatten (* _Jean-François Alcover_, Jul 25 2019 *)
%o (GAP)
%o T:=function(n,k) if k=1 or n=0 then return 1; else return Order(GL(n, Integers mod k)); fi; end;
%o for n in [0..5] do Print(List([1..6], k->T(n,k)), "\n"); od;
%o (PARI) T(n,k)={my(f=factor(k)); k^(n^2) * prod(i=1, #f~, my(p=f[i,1]); prod(j=1, n, (1 - p^(-j))))}
%Y Rows n=2..4 are A000252, A064767, A305186.
%Y Columns k=2..7 are A002884, A053290, A065128, A053292, A065498, A053293.
%Y Cf. A053291 (GF(4)), A052496 (GF(8)), A052497 (GF(9)).
%Y Cf. A316623.
%K nonn,mult,tabl
%O 0,8
%A _Andrew Howroyd_, Jul 08 2018
|