Primitivwurzeltest/Exponenzieren mit hohen Zahlen

  • Guten Abend zusammen,


    da ich gerne einen Primitivwurzeltest in C# selbst implementieren würde und das auch schon soweit tut bis zu einer bestimmten Größe, die dummerweise vom Datentyp long begrenzt wird, muss ich mich jetzt hier mal hilfesuchend melden.
    Es gibt zwar noch die Möglichkeit wie ich gesehen habe BigInteger zu verwenden , meine Frage nun, gibt es eine weitere Möglichkeit (byte array etc) die Ergebnisse beim Exponenzieren zu speichern?
    Oder habe ich beim Exponenzieren eine Umformung übersehen bzw. kann ich das Modulo früher mit einbauen um die zu exponenzierenden Zahlen kleiner zu halten?



    Beste Grüße und vielen Dank


    Edit:


    Mit ist vergangene Woche doch promt am nächsten Tag aufgefallen das ich einen Denkfehler hatte, so wissen wir alle das gilt:
    (p^g) mod d = (p1*p2*...*pg) mod d = ((p1 mod d)*(p2 mod d)*...*(pg mod d)
    was bedeutet das wir beim Exponenzieren nicht mehr in allzu große Größen kommen.


    Methode würde dann auf folgendes rauslaufen: