Files
30-seconds-of-code/snippets/gcd.md
Rohit Tanwar edd116a981 add spread
2018-01-09 02:08:05 +05:30

37 lines
828 B
Markdown

### gcd
Calculates the greatest common divisor between two or more numbers/arrays.
The `helperGcdfunction` uses recursion. Base case is when `y` equals `0`. In this case, return `x`. Otherwise, return the GCD of `y` and the remainder of the division `x/y`.
Uses the reduce function from the inbuild module `functools`. Also defines a method `spread` for javascript like spreading of arrays.
```python
from functools import reduce
def spread(arg):
ret = []
for i in arg:
if isinstance(i, list):
ret.extend(i)
else:
ret.append(i)
return ret
def gcd(*args):
numbers = []
numbers.extend(spread(list(args)))
def _gcd(x, y):
return x if not y else gcd(y, x % y)
return reduce((lambda x, y: _gcd(x, y)), numbers)
```
``` python
gcd(8,36) # 4
```