[GAP Forum] Order of elements in a group and their statistics

Stefan Kohl stefan at mcs.st-and.ac.uk
Sat Jul 13 11:45:44 BST 2013


Stefanos Aivazidis wrote:

> I have the following (rather naive) question to ask: what is the
> most efficient way to find the spectrum of a finite group G, and
> compute for each integer in the spectrum the number of elements with
> given order? An integer d lies in the spectrum of G iff there exists
> at least one g in G such that o(g)=d.  The algorithm, I imagine, should
> proceed along these lines:
>
> 1) define the group G,
> 2) compute the set of divisors of |G| and store this as a list L,
> 3) refine L (by excluding those divisors of |G| which do not
>      appear as element orders) to obtain the spectrum of G and
>      store this in a new list L',
> 4) compute how many elements of G have order d, for each d in L'
>
> Your thoughts on how to make this precise algorithmically would
> be much appreciated.

The following function should do what you want:

OrderStatistics := function ( G )

  local  ccl;

  ccl := List(ConjugacyClasses(G),cl->[Order(Representative(cl)),Size(cl)]);
  return List(Set(TransposedMat(ccl)[1]),
              d->[d,Sum(List(Filtered(ccl,cl->cl[1]=d),cl->cl[2]))]);
end;

For example:

gap> OrderStatistics(AlternatingGroup(20));
[ [ 1, 1 ], [ 2, 11798364735 ], [ 3, 3044269834280 ], [ 4, 147223414987200 ],
  [ 5, 189239120970624 ], [ 6, 4300403589581400 ], [ 7, 34479959558400 ],
  [ 8, 6979977625420800 ], [ 9, 8470676211379200 ], [ 10, 16976210865344640 ],
  [ 11, 609493248000 ], [ 12, 65698234614230400 ], [ 13, 37132204032000 ],
  [ 14, 8807580134496000 ], [ 15, 61842055316670720 ],
  [ 16, 76028187755520000 ], [ 17, 23851980472320000 ],
  [ 18, 81549282342528000 ], [ 19, 128047474114560000 ],
  [ 20, 22125275344972800 ], [ 21, 3030432354892800 ],
  [ 22, 806359567104000 ], [ 24, 54379597079808000 ],
  [ 26, 3898881423360000 ], [ 28, 26584005786624000 ],
  [ 30, 64123306600953600 ], [ 33, 3515557054464000 ],
  [ 35, 6125354900121600 ], [ 36, 22808456326656000 ],
  [ 39, 12996271411200000 ], [ 40, 22301601741619200 ],
  [ 42, 69870172724352000 ], [ 44, 11519422387200000 ],
  [ 45, 11488703927500800 ], [ 51, 47703960944640000 ],
  [ 52, 23393288540160000 ], [ 55, 1843107581952000 ],
  [ 56, 14481559572480000 ], [ 60, 40248008530329600 ],
  [ 63, 14481559572480000 ], [ 65, 18714630832128000 ],
  [ 66, 23038844774400000 ], [ 70, 17920929970944000 ],
  [ 72, 16895152834560000 ], [ 77, 15798064988160000 ],
  [ 78, 7797762846720000 ], [ 84, 12671364625920000 ],
  [ 90, 3379030566912000 ], [ 91, 26735186903040000 ],
  [ 99, 24574767759360000 ], [ 105, 4441011602227200 ],
  [ 110, 5529322745856000 ], [ 120, 20274183401472000 ],
  [ 126, 4827186524160000 ], [ 132, 9215537909760000 ],
  [ 140, 6516701807616000 ], [ 165, 14744860655616000 ],
  [ 168, 7240779786240000 ], [ 180, 6758061133824000 ],
  [ 210, 8688935743488000 ] ]

> Also, is it possible to produce a graph with
> the statistics found by the main programme?

What kind of graph do you wish to produce from the data?

Best regards,

    Stefan Kohl






More information about the Forum mailing list