Program Python sederhana untuk melakukan operasi aljabar menggunakan algoritma efisien seperti algoritma Karatsuba untuk multiplikasi atau algoritma Euclidean yang diperluas untuk pembagi umum yang hebat (GCD).
Program ini dimaksudkan untuk menjadi bighweight (tidak ada dependensi) dan sangat efisien.
pip install PyAlgebraLibAnda dapat mengimpor modul:
import PyAlgebraLib as paDapat beroperasi dengan angka dari basis 2 ke basis 16. Tanpa mengonversi antar pangkalan di setiap operasi.
Catatan: Setiap nomor harus dimasukkan dan akan dikembalikan sebagai string, kecuali basis.
pip install PyAlgebraLibAnda dapat mengimpor modul:
import PyAlgebraLib as paKemudian, Anda dapat melakukan operasi seperti:
pa . karatsuba ( "364da" , "-13f" , 16 ) # Multiplication (karatsuba algorithm)
pa . extEuclid ( "-1460" , "44321521" , 7 ) # GCD (Extended)Outputnya adalah string atau tuple dengan hasilnya, lihat ke dalam dokumen fungsi spesifik untuk informasi lebih lanjut.
Contoh:
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
| Nama fungsi | Masukan | Keluaran |
|---|---|---|
| Removeleadingzeros | A (str) | STR: String yang dimodifikasi dengan semua nol terkemuka dihapus |
| Greaterorequal | x (str), y (str) | BOOL: Benar jika x lebih besar dari atau sama dengan y, false sebaliknya |
| membagi | x (str), y (str), r (int) = 10 | str: hasil bagi x dibagi dengan y, diekspresikan dalam radix r |
| ElementaryAdd | x (str), y (str), c (str), r (int) = 10 | tuple: (result (str), carry (str)) |
| Dasar -Dasar CUB | x (str), y (str), c (str), r (int) = 10 | tuple: (result (str), carry (str)) |
| ElementaryMult | x (str), y (str), z (str), c (str), r (int) = 10 | tuple: (result (str), carry (str)) |
| menambahkan | x (str), y (str), r (int) = 10 | str: hasil x + y dalam radix r |
| mengurangi | x (str), y (str), r (int) = 10 | str: hasil x - y di radix r |
| berkembang biak | x (str), y (str), r (int) = 10 | str: hasil x * y di radix r |
| Karatsuba | x (str), y (str), r (int) = 10 | STR: Hasil x * y menggunakan algoritma karatsuba di radix r |
| eksteuclid | x (str), y (str), r (int) = 10 | tuple: (gcd (str), a (str), b (str)) |
| ModularReduction | n (str), m (str), r (int) = 10 | STR: Hasil n mod m di radix r |
| modularaddition | x (str), y (str), m (str), r (int) = 10 | STR: Hasil (x + y) mod m di radix r |
| ModularSubtraction | x (str), y (str), m (str), r (int) = 10 | STR: Hasil (x - y) mod m di radix r |
| modularmultiplication | x (str), y (str), m (str), r (int) = 10 | str: hasil (x * y) mod m di radix r |
| ModularInversion | a (str), m (str), r (int) = 10 | str: terbalik dari mod m di radix r, atau cetakan "terbalik tidak ada" |