diff --git a/maths/karatsuba.py b/maths/karatsuba.py index b772c0d77..4bf4aecdc 100644 --- a/maths/karatsuba.py +++ b/maths/karatsuba.py @@ -10,18 +10,18 @@ def karatsuba(a, b): """ if len(str(a)) == 1 or len(str(b)) == 1: return a * b - else: - m1 = max(len(str(a)), len(str(b))) - m2 = m1 // 2 - a1, a2 = divmod(a, 10**m2) - b1, b2 = divmod(b, 10**m2) + m1 = max(len(str(a)), len(str(b))) + m2 = m1 // 2 - x = karatsuba(a2, b2) - y = karatsuba((a1 + a2), (b1 + b2)) - z = karatsuba(a1, b1) + a1, a2 = divmod(a, 10**m2) + b1, b2 = divmod(b, 10**m2) - return (z * 10 ** (2 * m2)) + ((y - z - x) * 10 ** (m2)) + (x) + x = karatsuba(a2, b2) + y = karatsuba((a1 + a2), (b1 + b2)) + z = karatsuba(a1, b1) + + return (z * 10 ** (2 * m2)) + ((y - z - x) * 10 ** (m2)) + (x) def main():