Files
30-seconds-of-code/snippets/gcd.md
Rohit Tanwar fd42cd7994 fix identation
2018-01-08 19:58:27 +05:30

788 B

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.

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 helperGcd(x,y):
        return x if not y else gcd(y,x%y)
    return reduce((lambda x,y : helperGcd(x,y)),numbers)