karatsuba 是一种快速乘法,主要是采用了一种分治的思想来进行大数的乘法,其教程和证明可见 https://blog.csdn.net/qj30212/…
其 Python 代码如下
def karatsuba(num1, num2): if (num1 < 10 or num2 < 10): return num1 * num2 num1Str = str(num1) num2Str = str(num2) maxLength = max(len(num1Str), len(num2Str)) splitPosition = maxLength / 2 high1, low1 = int(num1Str[:splitPosition]), int(num1Str[splitPosition:]) high2, low2 = int(num2Str[:splitPosition]), int(num2Str[splitPosition:]) z0 = karatsuba(low1, low2) z1 = karatsuba((low1 + high1), (low2 + high2)) z2 = karatsuba(high1, high2) return (z2 * (10 ** (2 * splitPosition))) + ((z1 - z2 - z0) * (10 ** (splitPosition))) + z0
还是很牛的