PyAlgebraLib
v1.0.0
Programa Python simples para executar operações de álgebra usando algoritmos eficientes como o algoritmo de Karatsuba para multiplicação ou algoritmo euclidiano estendido para grande divisor comum (GCD).
Este programa pretende ser o peso -peso (sem dependências) e muito eficiente.
pip install PyAlgebraLibVocê pode importar o módulo:
import PyAlgebraLib as paPode operar com números da base 2 à base 16. Sem converter entre as bases em cada operação.
Nota: Cada número deve ser inserido e será retornado como uma string, exceto a base.
pip install PyAlgebraLibVocê pode importar o módulo:
import PyAlgebraLib as paEntão, você pode executar operações como:
pa . karatsuba ( "364da" , "-13f" , 16 ) # Multiplication (karatsuba algorithm)
pa . extEuclid ( "-1460" , "44321521" , 7 ) # GCD (Extended)A saída é uma string ou uma tupla com os resultados, observe a função específica DocStrings para obter mais informações.
Exemplo:
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
| Nome da função | Entrada | Saída |
|---|---|---|
| removeleadingzeros | A (STR) | STR: A sequência modificada com todos os zeros principais removidos |
| GreaterRequal | x (str), y (str) | bool: verdadeiro se x for maior ou igual a y, false caso contrário |
| dividir | x (str), y (str), r (int) = 10 | STR: O quociente de X dividido por Y, expresso em Radix R |
| ElementaryAdd | x (str), y (str), c (str), r (int) = 10 | tupla: (resultado (str), transporte (str)) |
| ElementarySub | x (str), y (str), c (str), r (int) = 10 | tupla: (resultado (str), transporte (str)) |
| ElementaryMult | x (str), y (str), z (str), c (str), r (int) = 10 | tupla: (resultado (str), transporte (str)) |
| adicionar | x (str), y (str), r (int) = 10 | STR: resultado de x + y em Radix R |
| subtrair | x (str), y (str), r (int) = 10 | STR: resultado de x - y em Radix R |
| multiplicar | x (str), y (str), r (int) = 10 | STR: resultado de x * y em Radix R |
| Karatsuba | x (str), y (str), r (int) = 10 | STR: resultado de x * y usando o algoritmo Karatsuba em Radix R |
| EXTUCLID | x (str), y (str), r (int) = 10 | Tupla: (GCD (STR), A (STR), B (STR)) |
| ModularReduction | n (str), m (str), r (int) = 10 | STR: resultado de n mod m em radix r |
| ModularAddition | x (str), y (str), m (str), r (int) = 10 | STR: resultado de (x + y) mod m em radix r |
| ModularSubtraction | x (str), y (str), m (str), r (int) = 10 | STR: resultado de (x - y) mod m em Radix R |
| ModularMultiplicação | x (str), y (str), m (str), r (int) = 10 | STR: resultado de (x * y) mod m em radix r |
| ModularInversion | a (str), m (str), r (int) = 10 | str: inverso de um mod m em radix r, ou impressões "inverso não existe" |