D
Size: a a a
D
D
D
D
D
А
D
D
M
D
D
M
M
M
{
{
const num1 = 5678;
const num2 = 1234;
const pivot = (start, end) => Math.floor((start + end) / 2);
const splitNumByPivot = num => {
const stringyNum = num.toString()
const len = stringyNum.length
return [+stringyNum.slice(0, pivot(0, len)), +stringyNum.slice(pivot(0, len))]
}
const multiplyKaratsuba = (num1, num2) => {
const [a, b] = splitNumByPivot(num1)
const [c, d] = splitNumByPivot(num2)
const ac = a * c //672
const bd = b * d //2652
const step3 = (a + b) * (c + d) //6164
const step4 = step3 - ac - bd //2840
return ac * Math.pow(10, 4) + step4 * Math.pow(10, 2) + bd
}
console.log(multiplyKaratsuba(num1, num2)) //7006652
console.log(num1 * num2) //7006652
А
{
M
{