/* Studium der endlichen Gruppen Gl_2(F_p) */

/* Entwickle eine Formel für die Ordnung von Gl_2(F_p). Hierzu könnten die folgenden
   MAGMA-Befehle von Nutzen sein.
 */

G := GL(2,5);
G;
#G;
Factorization(#G);

p:=2;
for i:=1 to 10 do
    p := NextPrime(p);
    print "p = ", p, "-----------------", #GL(2,p);
end for;

/* Sobald Sie eine Formel entwickelt haben, sollten Sie diese beweisen. */



/* Ordnung und zyklische Gruppen */
G := SymmetricGroup(5);
G;   
G.1;
G.2;
Generators(G); 
Order(G.1);
Order(G.2);
Order(G.1*G.2);


/* Wir schreiben eine einfache Funktion, die die Ordnung eines Elements einer endlichen Gruppe G bestimmt. 
*/
Ordnung := function(g)
    G := Parent(g);
    a := g;
    o := 1;
    while a ne One(G) do
        o := o + 1;
        a := a*g;
    end while;
    return o;
end function;


/* Tests der Korrektheit der definierten Funktion durch Vergleich mit der MAGMA-Funktion Order. */
Ordnung(G.1*G.2);
Ordnung(G.1*G.2^5);
&and [Order(g) eq Ordnung(g) : g in G];
