A multiplicação etíope é um método de multiplicar inteiros usando apenas adição, duplicação e redução pela metade.
Método:
Pegue dois números para serem multiplicados e anote-os no topo de duas colunas. Na coluna da esquerda, separe repetidamente o último número, descartando qualquer resto, e escreva o resultado abaixo do último na mesma coluna, até você escrever um valor de 1. Na coluna da direita repetidamente, duplique o último número e escreva o número. resultado abaixo. pare quando você adicionar um resultado na mesma linha de onde a coluna da esquerda mostra 1. Examine a tabela produzida e descarte qualquer linha na qual o valor na coluna da esquerda seja par. Soma os valores na coluna da direita que permanecem para produzir o resultado da multiplicação dos dois números originais juntosPor exemplo: 17 × 34
17 34
Reduzindo a primeira coluna:
17 34
8
4
2
1
Duplicando a segunda coluna:
17 34
8 68
4 136
2 272
1 544
Linhas de ataque cuja primeira célula é par:
17 34
8 68
4 136
2 272
1 544
Soma os números restantes na coluna da direita:
17 34
8 -
4 ---
2 ---
1 544
====
578
Então 17 multiplicado por 34, pelo método etíope é 578.
Tarefa:A tarefa é definir três funções / métodos / procedimentos / sub-rotinas nomeadas:
um para reduzir pela metade um inteiro, um para dobrar um inteiro e um para indicar se um inteiro é par.Use essas funções para criar uma função que faça multiplicação etíope.
eth_mult
é uma função.
testString: 'assert(typeof eth_mult === "function", "eth_mult
is a function.");'
- text: 'eth_mult(17,34)
deve retornar 578
.'
testString: 'assert.equal(eth_mult(17, 34), 578, "eth_mult(17,34)
should return 578
.");'
- text: 'eth_mult(23,46)
deve retornar 1058
.'
testString: 'assert.equal(eth_mult(23, 46), 1058, "eth_mult(23,46)
should return 1058
.");'
- text: 'eth_mult(12,27)
deve retornar 324
.'
testString: 'assert.equal(eth_mult(12, 27), 324, "eth_mult(12,27)
should return 324
.");'
- text: 'eth_mult(56,98)
deve retornar 5488
.'
testString: 'assert.equal(eth_mult(56, 98), 5488, "eth_mult(56,98)
should return 5488
.");'
- text: 'eth_mult(63,74)
deve retornar 4662
.'
testString: 'assert.equal(eth_mult(63, 74), 4662, "eth_mult(63,74)
should return 4662
.");'
```