Überlauf: a * a mod n

Ich muss rechnena*a modn abera ist ziemlich groß, was zu einem Überlauf führt, wenn ich es quadriere. Tun((a%n)*(a%n))%n funktioniert nicht, weil (n-1)2 kann überlaufen. Dies ist in C ++ und ich verwende Int 64.

edit: Beispiel ein Wert = 821037907258 und n = 800000000000, der überläuft, wenn Sie ihn quadrieren.

Ich verwende DevCPP und habe bereits versucht, Big-Integer-Bibliotheken ohne Erfolg zum Laufen zu bringen.

edit 2: Nein, diese Zahlen haben kein Muster.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage