gpt4 book ai didi

python - Python 中的 Karatsuba 算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:33 25 4
gpt4 key购买 nike

所以我在 python 中实现了 Karatsuba 的乘法算法。现在我有无限递归,无法弄清楚。有任何想法吗?如果需要,我会提供更多代码。

  def multiply(self, other):


# helper function
def split(largeInt, n):
least = largeInt._least_significant_digits(n/2)
most = largeInt._right_shift(n/2)
if debug: assert least.to_int() + (most.to_int() << (LargeInt.base_bits*(n/2))) == largeInt.to_int()
return least, most
n = max(len(str(self)),len(str(other)))
if (n==1):
return self.to_int() * other.to_int()
else:
aR, aL = split(self,n)
bR , bL = split(other, n)
x1 = aL.multiply(bL)
x2 =aR.multiply(bR)
a = aL.add(bL)
b = aR.add(bR)
x3=a.multiply(b)
# code for recursive step here
#return 1 # change this line with your implementation
return x1 * 10**n + (x3-x1-x2) * 10**(n/2) + x2

最佳答案

一些提示:

  • 我认为ab 的值不是what you want them to be .
  • 一个常见错误通常是拆分不会返回严格较小的数字:请提供 _least_significant_digits_right_shift 的来源。
  • 当您的一个输入的长度为 1 而另一个不是时会发生什么?在这种情况下,1 位数字的 split 返回什么?

关于python - Python 中的 Karatsuba 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com