Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for The Greatest Common Divisor by Stanislaw_Szataniak
def f(a, b):
while a!=b:
if a>b:
a-=b
else:
b-=a
return a
def greatest_common_divisor(*args):
args = list(args)
t=[]
args.sort()
if len(args)==2 and (args[0] == 2) and (args[1]%args[0] == 0):
return 2
for i in range(len(args)-1):
t.append(f(args[i], args[i+1]))
t.sort()
print(t)
if len(t) > 1 and t[1] % t[0] != 0:
for i in range(len(t)-1):
if f(t[i], t[i+1]) < t[i]:
t[i+1] = f(t[i], t[i+1])
t.sort()
return t[0]
greatest_common_divisor(210, 330, 462, 770)
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert greatest_common_divisor(6, 4) == 2, "Simple"
assert greatest_common_divisor(2, 4, 8) == 2, "Three arguments"
assert greatest_common_divisor(2, 3, 5, 7, 11) == 1, "Prime numbers"
assert greatest_common_divisor(3, 9, 3, 9) == 3, "Repeating arguments"
Nov. 25, 2016