ユークリッドの互除法というのを勉強します。
Aを割られる数、Bを割る数とします。
A÷B = C ... D
ここで、Cは商、Dは余りです。
次にすることは、
前回、割る数であったBを、割られる数とし、
前回の余りであるDを割る数とします。すなわち、
B÷D = E ... F
では次にすることは?
さてコードです。
%%js
function getGreatestCommonDivisionNumber(value1, value2){
let r;
a = value1;
b = value2;
do{
r = a % b;
a = b;
b = r;
}while(r!==0)
return a;
}
console.log(getGreatestCommonDivisionNumber(824,1133));
JavaScriptなら、undefinedやnull値と0を比較しても異なっていれば、false判定になるので下記のようにも書けます。単純に理解するだけならこの方がよい。
%%js
function getGreatestCommonDivisionNumber(value1, value2){
let r;
a = value1;
b = value2;
while(r !== 0){
r = a % b;
a = b;
b = r;
}
return a;
}
console.log(getGreatestCommonDivisionNumber(824,1133));
条件文(forやwhile, do while)は、三項演算子で書き換えが可能です。