Created
November 13, 2010 15:00
-
-
Save think49/675387 to your computer and use it in GitHub Desktop.
toGreatestCommonDivisor.js : 最大公約数を求める (ユークリッドの互除法)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
負の整数に対応するため、絶対値を求めています。
ユークリッドの互除法のアルゴリズムを使用しています。