Skip to content

Commit

Permalink
Karatsuba Multiplication
Browse files Browse the repository at this point in the history
  • Loading branch information
detel committed Jun 1, 2015
0 parents commit d2e0479
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions Karatsuba.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#x,y are strings
def karatsuba(x,y):

len1 = len(x)
len2 = len(y)

if len1 <=10 or len2 <=10 :
return int(x)*int(y)

if len1 > len2:
y = y.rjust(len1,'0')
l = len1
else:
x = x.rjust(len2,'0')
l = len2

mid = l/2
x0 = x[:mid]
x1 = x[mid:]
y0 = y[:mid]
y1 = y[mid:]

z0 = karatsuba(x0,y0)
z2 = karatsuba(x1,y1)
z1 = karatsuba(x0,y1)+karatsuba(x1,y0)

return ((10**l)*z0 + (10**((l)/2))*z1 + z2)

0 comments on commit d2e0479

Please sign in to comment.