util-helpers
Version:
45 lines (41 loc) • 949 B
JavaScript
;
var ut2 = require('ut2');
function gcd() {
var nums = [];
for (var _i = 0; _i < arguments.length; _i++) {
nums[_i] = arguments[_i];
}
var num1 = nums[0];
var num2 = nums[1] === void 0 ? 0 : nums[1];
var rest = nums.slice(2);
if (rest.length > 0) {
return gcd.apply(void 0, [gcd(num1, num2)].concat(rest));
}
num1 = Math.abs(ut2.round(num1));
num2 = Math.abs(ut2.round(num2));
if (ut2.isNaN(num1) || ut2.isNaN(num2)) {
return Number.NaN;
}
if (num1 === 0 && num2 === 0) {
return 0;
}
if (num1 === 0) {
return num2;
}
if (num2 === 0) {
return num1;
}
var temp = num2;
if (num1 < num2) {
temp = num1;
num1 = num2;
num2 = temp;
}
while (temp) {
temp = num1 % num2;
num1 = num2;
num2 = temp;
}
return ut2.toNumber(num1);
}
module.exports = gcd;