---
title: WDI 5.3
---
```python=
def gcd(n, m):
multiplier = 1
while m > 0:
if n < m:
k = m
m = n
n = k
ilenp = n % 2 + m % 2
if ilenp == 2:
n = n - m
elif ilenp == 0:
n /= 2
m /= 2
multiplier *= 2
elif n % 2 == 0:
n /= 2
else:
m /= 2
return n * multiplier
# def gcdr(n, m):
# if m == 0:
# return n
# if n < m:
# return gcdr(m, n)
# ilenp = n % 2 + m % 2
# if ilenp == 2:
# return gcd(n - m, m)
# if ilenp == 0:
# return 2 * gcd(n / 2, m / 2)
# if n % 2 == 0:
# return gcd(n / 2, m)
# else:
# return gcd(n, m / 2)
print('non-recursive', gcd(1280, 280))
# print('non-recursive', gcdr(1280, 280))
```