Эфиопское умножение - это метод умножения целых чисел, использующий только добавление, удвоение и уменьшение пополам.
Метод:
Возьмите два числа, чтобы их умножить и записать их в верхней части двух столбцов. В левом столбце повторите половину последнего номера, отбрасывая любые остатки и записывая результат ниже последнего в том же столбце, пока не напишите значение 1. В правом столбце многократно удвоите последнее число и запишите результат ниже. остановитесь, когда вы добавите результат в ту же строку, что и в столбце слева. 1. Изучите созданную таблицу и отбросьте любую строку, где значение в левом столбце четное. Суммируйте значения в правой колонке, которые останутся для получения результата умножения исходных двух чисел вместеНапример: 17 × 34
17 34
Половина первого столбца:
17 34
8
4
2
1
Удвоение второй колонки:
17 34
8 68
4 136
2 272
1 544
Stratch-out rows, чья первая ячейка четная:
17 34
8 68
4 136
2 272
1 544
Суммируйте оставшиеся числа в правом столбце:
17 34
8 -
4 ---
2 ---
1 544
====
578
Так 17, умноженное на 34, по эфиопскому методу - 578.
Задача:Задача состоит в том, чтобы определить три названные функции / методы / процедуры / подпрограммы:
один на половину целого числа, один для двойного целого числа, и один, чтобы указать, является ли целое четным.Используйте эти функции для создания функции, которая делает эфиопское умножение.
eth_mult
- это функция.
testString: 'assert(typeof eth_mult === "function", "eth_mult
is a function.");'
- text: 'eth_mult(17,34)
должен вернуть 578
.'
testString: 'assert.equal(eth_mult(17, 34), 578, "eth_mult(17,34)
should return 578
.");'
- text: 'eth_mult(23,46)
должен вернуть 1058
.'
testString: 'assert.equal(eth_mult(23, 46), 1058, "eth_mult(23,46)
should return 1058
.");'
- text: 'eth_mult(12,27)
должен вернуть 324
.'
testString: 'assert.equal(eth_mult(12, 27), 324, "eth_mult(12,27)
should return 324
.");'
- text: 'eth_mult(56,98)
должен вернуть 5488
.'
testString: 'assert.equal(eth_mult(56, 98), 5488, "eth_mult(56,98)
should return 5488
.");'
- text: 'eth_mult(63,74)
должен вернуть 4662
.'
testString: 'assert.equal(eth_mult(63, 74), 4662, "eth_mult(63,74)
should return 4662
.");'
```