Given an arbitrary list (of length >= 1) of positive integers, return the greatest common divisor (`gcd`

) of the list.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ```
#!/usr/bin/python
def gcd(*args):
if len(args) == 1:
return args[0]
L = list(args)
while len(L) > 1:
a = L[len(L) - 2]
b = L[len(L) - 1]
L = L[:len(L) - 2]
while a:
a, b = b%a, a
L.append(b)
return abs(b)
#if __name__ == "__main__":
print gcd(68, 14, 9, 36, 126)
``` |

We utilize the fact the `gcd`

is associative, i.e. `gcd(a, b, c) = gcd(gcd(a, b), c) = gcd(a, gcd(b, c))`

, in order to compute the `gcd`

of an arbitrary list of positive integers. You should note that we do NOT check user input for such things as: `gcd(-3, 9)`

or `gcd(3.14159, 2.71828)`

. Further, the desired end result could be completed as follows:

```
def g(a, b):
return a if b==0 else g(b, a%b)
```

and

```
def gcd(*args):
return reduce(g, args)
```

using less code but the ideas was to build a single function that computes the `gcd`

of some list of integers. Enjoy and let me know if you find a more succinct way.