Skip to content

Instantly share code, notes, and snippets.

@think49
Created November 13, 2010 15:00
Show Gist options
  • Save think49/675387 to your computer and use it in GitHub Desktop.
Save think49/675387 to your computer and use it in GitHub Desktop.
toGreatestCommonDivisor.js : 最大公約数を求める (ユークリッドの互除法)
/**
* toGreatestCommonDivisor.js
* @version 1.0
* @author think49
*/
/**
* 最大公約数を求める。(ユークリッドの互除法)
* @function
* @param {Number} integer1 整数1
* @param {Number} integer2 整数2
* @returns {Number} 最大公約数を返す。最大公約数が存在しなければ、NaN を返す。
*/
function toGreatestCommonDivisor (integer1, integer2) {
var _Infinity, _Math, _isNaN, m, n, result;
_Infinity = 1/0;
_Math = Math;
_isNaN = isNaN;
integer1 = _Math.abs(integer1);
integer2 = _Math.abs(integer2);
if (integer1 === _Infinity || integer2 === _Infinity || _isNaN(integer1) || _isNaN(integer2) || integer1 % 1 !== 0 || integer2 % 1 !== 0) {
return 0/0;
}
if (integer1 === integer2) {
return integer1;
} else if (integer1 > integer2) {
m = integer1;
n = integer2;
} else {
m = integer2;
n = integer1;
}
do {
result = m % n;
m = n;
n = result;
} while (result !== 0);
return n;
}
@think49
Copy link
Author

think49 commented Nov 13, 2010

負の整数に対応するため、絶対値を求めています。

ユークリッドの互除法のアルゴリズムを使用しています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment