Modulare Potenzierung - Rosetta-Code
Wir können die eingebaut in PowerMod Funktion mit dem eingebauten in BigInt Typ (basierend auf GMP):
Version 1 [Bearbeiten]
Dieses REXX Programm versucht, jede ein zu handhaben. b. oder m. aber es gibt Grenzen für jede Computersprache.
Für einige REXXes ist es rund acht Millionen Stellen für jeden arithmetischen Ausdruck oder Wert, die Beschränkungen für die legt
Werte eines 2 oder 10 m.
Es gibt REXX-Code (unten), um automatisch die Anzahl der Ziffern einstellen große Zahl aufzunehmen, die sind
berechnet, wenn eine große Zahl an einer beliebigen potenziert.
Dieses REXX Programm nutzt LINESIZE REXX Programm (oder BIF), die verwendet wird, um die Bildschirmbreite (oder LINESIZE) des Anschlusses (Konsole) zu bestimmen.
Das LINESIZE.REX REXX-Programm ist hier enthalten ──► LINESIZE.REX.
ausgegeben wird, wenn mit der Eingabe von:. . 40 80 180 888
Beachten Sie das REXX-Programm wurde breit in einem Fenster von 600 Zeichen ausgeführt wird, und sogar mit, dass das letzte Ergebnis gewickelt.
Version 2 [Bearbeiten]
Ruby-Core-Bibliothek hat keine modulare Potenzierung. OpenSSL, in Rubys Standardbibliothek stellt OpenSSL :: BN # mod_exp. Um diese Methode zu erreichen, wir Integer # to_bn nennen von Integer zu OpenSSL :: BN zu konvertieren. Das Verfahren implizit konvertiert b und m.
Oder wir können eine benutzerdefinierte Methode, Integer # rosetta_mod_exp, implementieren das gleiche Ergebnis zu berechnen. Diese Methode Exponentiation durch sukzessive Quadrierung, aber ersetzt jedes Zwischenprodukt mit einem deckungsgleichen Wert. (Programm benötigt Ruby-1.8.7 für Integer # ungerade?).
Arbeitet mit. Ruby-Version 1.8.7