Дискуссионный математический форумМатематический форум

Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
MathHelpPlanet.com RSS-лента Математического форума

Часовой пояс: UTC + 3 часа [ Летнее время ]


JavaScript: НОД и НОК (GCD and LCM)

JavaScript: НОД и НОК (GCD and LCM)


Наибольший общий делитель на JavaScript


По определению наибольший общий делитель (НОД, англ. GCD - greatest common divisor) нескольких целых чисел a_1,a_2,\ldots,a_n есть наибольшее из натуральных чисел, которое делит каждое из данных чисел. Например, \operatorname{NOD}(15,30)=15 и \operatorname{NOD}(16,-48,72)=8.


Пример реализации алгоритма поиска наибольшего общего делителя в массиве целых чисел.


function NOD(A)
{
var n = A.length, x = Math.abs(A[0]);
for (var i = 1; i < n; i++)
{ var y = Math.abs(A[ i ]);
while (x && y){ x > y ? x %= y : y %= x; }
x += y;
}
return x;
}
// A - массив целых чисел (например, [57,0,-45,-18,90,447])

Наименьшее общее кратное на JavaScript


По определению наименьшее общее кратное (НОК, англ. LCM - least common multiple) нескольких целых чисел a_1,a_2,\ldots,a_n есть наименьшее из натуральных чисел, которое делится на каждое из данных чисел. Например, \operatorname{NOK}(15,25)=75 и \operatorname{NOK}(16,-48,72)=144.


Пример реализации алгоритма поиска наименьшего общего кратного в массиве целых чисел.


function NOK(A)
{
var n = A.length, a = Math.abs(A[0]);
for (var i = 1; i < n; i++)
{ var b = Math.abs(A[ i ]), c = a;
while (a && b){ a > b ? a %= b : b %= a; }
a = Math.abs(c*A[ i ])/(a+b);
}
return a;
}
// A - массив целых чисел (например, [-50,25,-45,-18,90,447])
Перейти на форум (помощь с решением задач, обсуждение вопросов по математике).
Кнопка "Поделиться"

Часовой пояс: UTC + 3 часа [ Летнее время ]


Яндекс.Метрика

Copyright © 2010-2018 MathHelpPlanet.com. All rights reserved