Реализации алгоритмов/Бинарный алгоритм вычисления НОД: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 201:
<source lang="ruby">
def gcd(m, n)
return n if m == 0
return m returnif n == 0
elsifreturn nm if m == 0n
return 1 if m == 1 || n == 1
return m
elsifif m == n.even?
returnif mn.even?
elsif return 2 * gcd(m ==>> 1 ||, n ==>> 1)
return 1
elsif m.even? && n.even?
return gcd(m/2, n/2)
elsif m.even? && n.odd?
return gcd(m/2, n)
elsif m.odd? && n.even?
return (m, n/2)
else
if n > m
return gcd((n - m) / 2, m)
else
return Binary_GCD((m - n) / 2, n)
end
return gcd(m >> 1, n)
else
returngcd(n, (m, - n/2).abs)
end
end