39 lines
954 B
Python
39 lines
954 B
Python
def multiplication_egyptienne(n: int, m: int) -> int:
|
|
assert n>=1 and m>=1
|
|
result = m
|
|
if n > 1:
|
|
if n % 2 == 0:
|
|
result = multiplication_egyptienne(n//2, m*2)
|
|
else:
|
|
result = m + multiplication_egyptienne(n-1, m)
|
|
return result
|
|
|
|
print(multiplication_egyptienne(7,5))
|
|
|
|
def multiplication_egyptienne2(n: int, m: int) -> int:
|
|
assert n>=1 and m>=1
|
|
if n == 1:
|
|
return m
|
|
elif n % 2 == 0:
|
|
return multiplication_egyptienne(n//2, m*2)
|
|
else:
|
|
return m + multiplication_egyptienne(n-1, m)
|
|
|
|
print(multiplication_egyptienne2(7,5))
|
|
|
|
def multiplication_egyptienne_iterative(n: int, m: int) -> int:
|
|
assert n > m
|
|
assert n>=1 and m>=1
|
|
result = 0
|
|
while n > 1:
|
|
if n % 2 != 0:
|
|
result += m
|
|
n = n-1
|
|
else :
|
|
n = n//2
|
|
m = m*2
|
|
result += m
|
|
return result
|
|
|
|
print(multiplication_egyptienne_iterative(7,5))
|