Простая программа Python для выполнения операций алгебры с использованием эффективных алгоритмов, таких как алгоритм Карацубы для умножения или расширенного евклидового алгоритма для большого общего делителя (GCD).
Эта программа предназначена для того, чтобы быть легким (без зависимостей) и очень эффективной.
pip install PyAlgebraLibВы можете импортировать модуль:
import PyAlgebraLib as paМожет работать с числами от базы 2 до основания 16. без преобразования между основаниями в каждой операции.
Примечание. Каждый номер должен быть введен и будет возвращен в виде строки, кроме базы.
pip install PyAlgebraLibВы можете импортировать модуль:
import PyAlgebraLib as paЗатем вы можете выполнять такие операции, как:
pa . karatsuba ( "364da" , "-13f" , 16 ) # Multiplication (karatsuba algorithm)
pa . extEuclid ( "-1460" , "44321521" , 7 ) # GCD (Extended)Вывод - это либо строка, либо кортеж с результатом (и), посмотрите на конкретную функцию DocStrings для получения дополнительной информации.
Пример:
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
| Имя функции | Вход | Выход |
|---|---|---|
| RemoveLeadingzeros | A (Str) | Str: модифицированная строка со всеми ведущими нулями удалена |
| Большерекваль | x (str), y (str) | Bool: true, если x больше или равен Y, неверно иначе |
| разделять | x (str), y (str), r (int) = 10 | Str: Коэффициент x, разделенная на Y, выраженное в Radix R |
| elementaryAdd | x (str), y (str), c (str), r (int) = 10 | Тупел: (результат (str), переносить (str)) |
| ElementarySub | x (str), y (str), c (str), r (int) = 10 | Тупел: (результат (str), переносить (str)) |
| Элементарное мнение | x (str), y (str), z (str), c (str), r (int) = 10 | Тупел: (результат (str), переносить (str)) |
| добавлять | x (str), y (str), r (int) = 10 | Str: результат x + y в Radix R |
| вычтите | x (str), y (str), r (int) = 10 | Str: Результат x - y в Radix R |
| умножить | x (str), y (str), r (int) = 10 | Str: результат x * y в Radix R |
| Карацуба | x (str), y (str), r (int) = 10 | Str: Результат x * y с использованием алгоритма Karatsuba в Radix R |
| экзеуклидный | x (str), y (str), r (int) = 10 | Тупел: (GCD (Str), A (Str), B (Str)) |
| модульнаяреда | n (str), m (str), r (int) = 10 | Str: Результат n mod m в Radix R |
| Модуляд | x (str), y (str), m (str), r (int) = 10 | Str: результат (x + y) mod m в Radix r |
| модульный ссуд | x (str), y (str), m (str), r (int) = 10 | Str: результат (x - y) mod m в Radix r |
| Модульная имильтипилирование | x (str), y (str), m (str), r (int) = 10 | Str: результат (x * y) mod m в Radix r |
| модуляверсия | a (str), m (str), r (int) = 10 | Str: обратный мод M в Radix R или отпечатки «не существует» |