UNPKG

util-helpers

Version:

一个基于业务场景的工具方法库

45 lines (41 loc) 949 B
'use strict'; 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;