>>718
了解。

アルゴリズムという用語の説明として、「ユークリッドの互除法」が解説されています。
Javaのソース付き。
http://hwb.ecc.u-tokyo.ac.jp/current/CDD1B8ECBDB82FA5A2A5EBA5B4A5EAA5BAA5E0.html

ほとんどの場合において、ユークリッドの互助法を使ったほうが速い。
  maxYakusu(100, 100)
と呼ばれた場合、2から100まで順に調べるのと、いきなり num1 を num2 割ってみるのとでは、速度の差は歴然。

あと、>>716 に引用したメソッドには、バグがある。パラメタ num1 と num2 の両方に、
int 型の最大値である 2147483647 を渡した場合、for ループの中でいったん正しい値 (=2147483647)
をみつけて変数 max に代入するが、ループを抜けるかどうかの条件を調べる前に i++ が行われて
i の値が -2147483648 (マイナスの数!) になってしまい、ループを永遠に抜け出せない。

そのまま i の値はマイナスのまま絶対値を減らし続け、i == 0 となった時に、
「java.lang.ArithmeticException: / by zero」と、例外を吐いて落ちる。