How to calculate the Ethiopian multiplication in Python

1 Answer

0 votes
"""
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
"""

def ethiopianMultiply(a, b):
    sum = 0

    while a > 0:
        if a % 2 == 1:   # keep only odd rows
            sum += b
            print("sum =", sum)

        a //= 2          # halve left side
        b *= 2           # double right side
        print("a =", a, "b =", b)

    return sum


def main():
    a = 57
    b = 18
    print(ethiopianMultiply(a, b))


if __name__ == "__main__":
    main()



"""
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
...