Einfaches Python -Programm zur Durchführung von Algebra -Operationen unter Verwendung effizienter Algorithmen wie dem Algorithmus von Karatsuba zur Multiplikation oder einem erweiterten euklidischen Algorithmus für Great Common Divisor (GCD).
Dieses Programm soll ein Lighgewicht (keine Abhängigkeiten) und sehr effizient sein.
pip install PyAlgebraLibSie können das Modul importieren:
import PyAlgebraLib as paKann mit Zahlen von Basis 2 bis Basis 16 arbeiten. Ohne zwischen den Basen in jedem Vorgang umzuwandeln.
HINWEIS: Jede Nummer muss eingegeben werden und wird als Zeichenfolge außer der Basis zurückgegeben.
pip install PyAlgebraLibSie können das Modul importieren:
import PyAlgebraLib as paDann können Sie Operationen wie:
pa . karatsuba ( "364da" , "-13f" , 16 ) # Multiplication (karatsuba algorithm)
pa . extEuclid ( "-1460" , "44321521" , 7 ) # GCD (Extended)Die Ausgabe ist entweder eine Zeichenfolge oder ein Tupel mit den Ergebnissen (en). Untersuchen Sie die spezifischen Funktionsdocstrings, um weitere Informationen zu erhalten.
Beispiel:
pa . extEuclid ( "-1460" , "44321521" , 7 )
# Output: ('1', '-20066304', '511')
pa . modularInversion ( "9a1aa8a02232" , "a6a722a" , 11 )
# Output: '3293845' - Addition
- Subtraction
- Multiplication (Normal "primary school method" + Karatsuba algorithm)
- Division
- GCD of 2 numbers (Extended Euclidean algorithm)
- Modular Arithmetic:
- Reduction
- Addition
- Subtraction
- Multiplication
- Inversion
| Funktionsname | Eingang | Ausgabe |
|---|---|---|
| Removeleadingzeros | a (str) | STR: Die modifizierte Zeichenfolge mit allen führenden Nullen entfernt |
| größeresqual | x (str), y (str) | bool: wahr, wenn x größer oder gleich y ist, sonst falsch falsch |
| teilen | x (str), y (str), r (int) = 10 | STR: Der Quotient von x geteilt durch y, ausgedrückt in Radix r |
| ElementaryAdd | x (str), y (str), c (str), r (int) = 10 | Tupel: (Ergebnis (STR), Tragen (str)) |
| ElementarySub | x (str), y (str), c (str), r (int) = 10 | Tupel: (Ergebnis (STR), Tragen (str)) |
| Elementarymult | x (str), y (str), z (str), c (str), r (int) = 10 | Tupel: (Ergebnis (STR), Tragen (str)) |
| hinzufügen | x (str), y (str), r (int) = 10 | STR: Ergebnis von x + y in Radix r |
| subtrahieren | x (str), y (str), r (int) = 10 | STR: Ergebnis von x - y in Radix r |
| multiplizieren | x (str), y (str), r (int) = 10 | STR: Ergebnis von x * y in Radix r |
| Karatsuba | x (str), y (str), r (int) = 10 | STR: Ergebnis von x * y mit Karatsuba -Algorithmus in Radix r |
| Exteclid | x (str), y (str), r (int) = 10 | Tupel: (GCD (STR), A (STR), B (STR)) |
| Modularreduktion | n (str), m (str), r (int) = 10 | STR: Ergebnis von n mod m in Radix r |
| Modularaddition | x (str), y (str), m (str), r (int) = 10 | STR: Ergebnis von (x + y) mod m in Radix r |
| modularSubtraction | x (str), y (str), m (str), r (int) = 10 | STR: Ergebnis von (x - y) mod m in Radix r |
| modularmultiplikation | x (str), y (str), m (str), r (int) = 10 | STR: Ergebnis von (x * y) mod m in Radix r |
| Modularinversion | a (str), m (str), r (int) = 10 | STR: Umkehrung eines Mods in Radix R oder Drucken "Inverse existiert nicht" |