cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A258446 Irregular triangular array read by rows. Row n gives the decomposition of the multiplicative group of integers modulo n as a direct product of cyclic groups C_1 X C_2 X ... X C_k, where |C_i| divides |C_j|, i>j.

Original entry on oeis.org

1, 2, 2, 4, 2, 6, 2, 2, 6, 4, 10, 2, 2, 12, 6, 4, 2, 4, 2, 16, 6, 18, 4, 2, 6, 2, 10, 22, 2, 2, 2, 20, 12, 18, 6, 2, 28, 4, 2, 30, 8, 2, 10, 2, 16, 12, 2, 6, 2, 36, 18, 12, 2, 4, 2, 2, 40, 6, 2, 42, 10, 2, 12, 2, 22, 46, 4, 2, 2, 42, 20
Offset: 2

Views

Author

Geoffrey Critzer and Mark Dooris, May 30 2015

Keywords

Comments

Row lengths are A046072.
The products of the terms in each row are A000010.
First column is A002322.
Row 2^k is [2, 2^(k-2)] for k > 2. - Tom Edgar, May 31 2015
Row p^k (and row 2*p^k) is [(p-1)*p^(k-1)] for odd prime p. - Tom Edgar, May 31 2015
The number of distinct groups over numbers less than or equal to 10^k for k=1,2,3,4,5,6 is 5, 50, 447, 4060, 36655, 335714.

Examples

			1;
2;
2;
4;
2;
6;
2, 2;
6;
4;
10;
2, 2;
12;
6;
4, 2;
4, 2;
16;
6;
18;
4, 2;
6, 2;
10;
22;
2, 2, 2;
The row for n=8 reads: 2,2 because the multiplicative group mod 8 is isomorphic to C_2 X C_2.
		

References

  • Shanks, D. Solved and Unsolved Problems in Number Theory, 4th ed. New York: Chelsea, pp. 92-93, 1993.

Programs

  • Mathematica
    f[{p_, e_}] := {FactorInteger[p - 1][[All, 1]]^
       FactorInteger[p - 1][[All, 2]],
      FactorInteger[p^(e - 1)][[All, 1]]^
       FactorInteger[p^(e - 1)][[All, 2]]};
    fun[lst_] :=
    Module[{int, num, res},
      int = Sort /@ GatherBy[Join @@ (FactorInteger /@ lst), First];
      num = Times @@ Power @@@ (Last@# & /@ int);
      res = Flatten[Map[Power @@ # &, Most /@ int, {2}]];
      {num, res}]
    rec[lt_] :=
    First@NestWhile[{Append[#[[1]], fun[#[[2]]][[1]]],
         fun[#[[2]]][[2]]} &, {{}, lt}, Length[#[[2]]] > 0 &];
    Table[If[! IntegerQ[n/8],
        DeleteCases[rec[Flatten[Map[f, FactorInteger[n]]]], 1],
        DeleteCases[
         rec[Join[{2, 2^(FactorInteger[n][[1, 2]] - 2)},
           Flatten[Map[f, Drop[FactorInteger[n], 1]]]]], 1]], {n, 2,
        50}] /. {} -> {1} // Grid