Karatsuba Multiplication 在Python中实现的问题

Karatsuba乘法的算法思路运用了递归的思想,贴上Stanford的Tim Roughgarden的课件。这里说说我遇到的代码实现的问题。

在coursera上面的算法课的作业题是用这个Karatsuba做两个64位整数相乘。

我最开始写的代码:

import numpy as np

def Karatsuba(x,y):
    m=(len(str(x))//2)
    a = x // (np.power(10, m))
    b = x % np.power(10, m)
    c = y // (np.power(10, m))
    d = y % np.power(10, m)

    if len(str(x))==1:
        return x*y
    else:
        a_c = Karatsuba(a,c)
        b_d = Karatsuba(b,d)
        ad_bc = Karatsuba(a+b,c+d) - a_c - b_d

        res = np.power(10,m*2) *a_c +np.power(10,m)*ad_bc + b_d

        return res

当输入不太大的时候,例如8位或者16位整数࿰

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值