PyAlgebraLib
v1.0.0
Programa simple de Python para realizar operaciones de álgebra utilizando algoritmos eficientes como el algoritmo de Karatsuba para la multiplicación o algoritmo euclidiano extendido para un gran divisor común (GCD).
Este programa está destinado a ser de peso ligero (sin dependencias) y muy eficiente.
pip install PyAlgebraLibPuede importar el módulo:
import PyAlgebraLib as paPuede operar con números de la base 2 a la base 16. Sin convertir entre bases en cada operación.
Nota: Cada número debe ser ingresado y se devolverá como una cadena, excepto la base.
pip install PyAlgebraLibPuede importar el módulo:
import PyAlgebraLib as paLuego, puede realizar operaciones como:
pa . karatsuba ( "364da" , "-13f" , 16 ) # Multiplication (karatsuba algorithm)
pa . extEuclid ( "-1460" , "44321521" , 7 ) # GCD (Extended)La salida es una cadena o una tupla con los resultados, busque las documentos de funciones específicas para obtener más información.
Ejemplo:
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
| Nombre de función | Aporte | Producción |
|---|---|---|
| removeleadingzeros | A (str) | STR: la cadena modificada con todos los ceros principales eliminados |
| Greaterorequal | x (str), y (str) | bool: verdadero si x es mayor o igual a y, falso de lo contrario |
| dividir | x (str), y (str), r (int) = 10 | STR: El cociente de x dividido por y, expresado en Radix r |
| primaryadd | x (str), y (str), c (str), r (int) = 10 | Tuple: (resultado (str), transporte (str)) |
| elementarysub | x (str), y (str), c (str), r (int) = 10 | Tuple: (resultado (str), transporte (str)) |
| primaria | x (str), y (str), z (str), c (str), r (int) = 10 | Tuple: (resultado (str), transporte (str)) |
| agregar | x (str), y (str), r (int) = 10 | STR: resultado de x + y en Radix r |
| sustraer | x (str), y (str), r (int) = 10 | STR: resultado de x - y en Radix r |
| multiplicar | x (str), y (str), r (int) = 10 | STR: resultado de x * y en Radix r |
| karatsuba | x (str), y (str), r (int) = 10 | STR: resultado de x * y usando el algoritmo Karatsuba en Radix R |
| estreñido | x (str), y (str), r (int) = 10 | Tuple: (GCD (STR), A (STR), B (STR)) |
| modularreducción | n (str), m (str), r (int) = 10 | str: resultado de n mod m en Radix r |
| modularidad | x (str), y (str), m (str), r (int) = 10 | Str: resultado de (x + y) mod m en radix r |
| ModularSubtracción | x (str), y (str), m (str), r (int) = 10 | STR: resultado de (x - y) mod m en radix r |
| Modularmultiplicación | x (str), y (str), m (str), r (int) = 10 | STR: resultado de (x * y) mod m en Radix r |
| ModularInversión | a (str), m (str), r (int) = 10 | STR: Inverso de un mod m en radix r, o imprime "inverso no existe" |