modified gcd.md to fewer lines of code

modify gcd.md to fewer lines of code

modified README
This commit is contained in:
sandy9999
2019-04-19 14:39:30 +05:30
parent 5424f64e2c
commit df18a3f7b2
3 changed files with 19 additions and 60 deletions

View File

@ -1,38 +1,17 @@
### gcd
:information_source: `math.gcd` works with only two numbers
Calculates the greatest common divisor of a list of numbers.
Calculates the greatest common divisor between two or more numbers/lists.
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 inbuilt module `functools`. Also defines a method `spread` for javascript like spreading of lists.
Uses the reduce function from the inbuilt module `functools`. Also uses the `math.gcd` function over a list.
```python
from functools import reduce
import math
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)
def gcd(numbers):
return reduce(math.gcd, numbers)
```
``` python
gcd(8,36) # 4
gcd([8,36,28]) # 4
```