ユークリッドの互助法
ユークリッドの互助法という名前のアルゴリズムを紹介します。これは最大公約数を求めるアルゴリズムで、
ある整数x,yの最大公約数gcd(x,y)の解を求めるとして、yが0であればx、そうでなければgcd(y, x % y)が解となる。
という至って単純なアルゴリズムです。
以下のコードはこのアルゴリズムを再帰で実装したものです。ループで実装したコードはコメントアウトされています。(再帰のほうが断然エレガントである)
sample/GCDSample.java
package sample; public class GCDSample { public static int gcd(int x, int y) { return y == 0 ? x : gcd(y, x % y); } /* public static int gcd(int x, int y) { while (y != 0) { int t = x % y; x = y; y = t; } return x; } */ public static void main(String[] args) { System.out.println(gcd(1071, 1029); } }