使用python的karatsuba多项式乘法

时间:2018-07-06 01:35:08

标签: karatsuba

我正在尝试使用Karatsuba算法实现将2个多项式相乘的代码,我发现此代码可以使用kartasuba方法对2个整数进行相乘,但是我无法对其进行编辑以使其能够包含2个多项式方程。

下面的代码可以计算出两个整数的乘积,例如x = 55,y = 10将返回550

需要对其进行编辑以乘以2多项式,例如x = [5,5],即5X + 5。 y = [1,0]是X,函数应该返回[5,5,0],即5X ^ 2 + 5X

def karatsuba(x,y):

# Set B = 10
B = 10
# Recursion base case
if x < 10 or y < 10:
    return x*y    

# m set to be length of x or y, whichever is maximum
m = max(int(log10(x)+1), int(log10(y)+1))

# check whether m is even. If odd, set m lower by 1
if m % 2 != 0:
    m -= 1
m_2 = int(m/2)

a, b = divmod(x, B**m_2)
c, d = divmod(y, B**m_2)
ac = karatsuba(a,c)
bd = karatsuba(b,d)
ad_bc = karatsuba((a+b),(c+d)) - ac - bd

return ((ac*(10**m)) + bd + ((ad_bc)*(10**m_2)))

0 个答案:

没有答案