Реализации алгоритмов/Бинарный алгоритм вычисления НОД: различия между версиями
Содержимое удалено Содержимое добавлено
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
|||
Строка 5:
==[[w:C (язык программирования)|С]]==
Цикл:
<
typedef unsigned int Integer; /* Вместо unsigned int можно подставить любой другой целочисленный тип */
Строка 43:
return a << shift;
}
</syntaxhighlight>
==[[w:C_Sharp|C#]], [[w:Java|Java]]==
Рекурсия:
<
static long gcd (long a, long b) {
if (a == 0)
Строка 66:
: gcd (b, a > b ? a - b : b - a); // …если b — нечётное, то НОД(a, b) = НОД(b, |a - b|)
}
</syntaxhighlight>
==[[w:JavaScript|JavaScript]]==
Без рекурсии:
<
function GCD (a, b) { // НОД двух целых чисел
var factor = 1;
Строка 107:
}
}
</syntaxhighlight>
==[[w:Паскаль (язык программирования)|Pascal]]==
Рекурсия:
<
type IntType = Integer; { Вместо Integer можно подставить любой другой целочисленный тип }
Строка 135:
GCD := GCD(a shr 1, b shr 1) shl 1 { НОД(a, b) = 2 * НОД(a / 2, b / 2) }
end;
</syntaxhighlight>
==[[w:Perl|Perl]]==
Без рекурсии:
<
sub gcd
{
Строка 165:
return $v*$g;
}
</syntaxhighlight>
==[[w:Python|Python]]==
Рекурсия:
<
# Возвращает True, если число нечётно, False иначе
def is_odd (number):
Строка 194:
else: # …если b — чётное, то…
return gcd(a >> 1, b >> 1) << 1 # НОД(a, b) = 2 * НОД(a / 2, b / 2)
</syntaxhighlight>
==[[w:Ruby|Ruby]]==
Рекурсия:
<
def gcd(m, n)
return n if m == 0
Строка 209:
gcd(n, (m - n).abs)
end
</syntaxhighlight>
==[[w:Scala|Scala]]==
<!-- Добавил Рыжий Лис red-fox0@mail.ru -->
Рекурсия:
<
def GCD(a:BigInt, b:BigInt):BigInt = {
if (a == 0) return b;
Строка 225:
return GCD(b, (a - b).abs);
}
</syntaxhighlight>
{{BookCat}}
|