How to calculate the Ethiopian multiplication in VB.NET

1 Answer

0 votes
Imports System

'
' Example: 57 * 18
'
'     57      18
' Halving the first column:
'
'     28      18
'     14
'      7
'      3
'      1
' Doubling the second column:
'
'     28       36
'     14       72
'      7      144
'      3      288
'      1      576
' Remove rows whose first cell is even:
'
'              18
'     28       36 x 
'     14       72 x
'      7      144
'      3      288
'      1      576
' Sum the remaining numbers in the right-hand column:
'              18
'     28        -
'     14        -
'      7      162
'      3      288
'      1      576
'            ====
'            1026
'

Module EthiopianMultiplication

    Function EthiopianMultiply(a As Integer, b As Integer) As Integer
        Dim sum As Integer = 0

        While a > 0
            If a Mod 2 = 1 Then   ' keep only odd rows
                sum += b
                Console.WriteLine("sum = " & sum)
            End If

            a = a \ 2             ' halve left side
            b = b * 2             ' double right side
            Console.WriteLine("a = " & a & " b = " & b)
        End While

        Return sum
    End Function

    Sub Main()
        Dim a As Integer = 57
        Dim b As Integer = 18

        Console.WriteLine(EthiopianMultiply(a, b))
    End Sub

End Module



'
' run:
'
' sum = 18
' a = 28 b = 36
' a = 14 b = 72
' a = 7 b = 144
' sum = 162
' a = 3 b = 288
' sum = 450
' a = 1 b = 576
' sum = 1026
' a = 0 b = 1152
' 1026
'

 



answered Mar 17 by avibootz
...