Sage impls single-files code&tests

This commit is contained in:
2022-08-16 19:55:41 +02:00
parent 996a3e8f6a
commit 3a0aca0f8c
10 changed files with 454 additions and 455 deletions

View File

@@ -77,3 +77,32 @@ def inv_mod(a, N):
if g != 1:
raise Exception("inv_mod err, g!=1")
return mod(x, N)
# Tests
#####
# Chinese Remainder Theorem tests
a_i = [5, 3, 10]
m_i = [7, 11, 13]
assert crt(a_i, m_i) == 894
a_i = [3, 8]
m_i = [13, 17]
assert crt(a_i, m_i) == 42
#####
# gcd, using Binary Euclidean algorithm tests
assert gcd(21, 12) == 3
assert gcd(1_426_668_559_730, 810_653_094_756) == 1_417_082
assert gcd_recursive(21, 12) == 3
#####
# Extended Euclidean algorithm tests
assert egcd(7, 19) == (1, -8, 3)
assert egcd_recursive(7, 19) == (1, -8, 3)
#####
# Inverse modulo N tests
assert inv_mod(7, 19) == 11