c#:最大公約数

最大公約数(2つの整数の公約数のうち最大のものを求める方法)として有名なのが「ユークリッドの互除法」
探していたら、見つけたので無くならないように覚書。
ループ
class Program {
static void Main(string[] args) {
Console.WriteLine(Gcd(0, 8));
Console.WriteLine(Gcd(12, 8));
Console.WriteLine(Gcd(3400, 6596));
Console.WriteLine(Gcd(12707, 12319));
}
// ユークリッドの互除法
public static int Gcd(int a, int b) {
if (a < b) // 引数を入替えて自分を呼び出す return Gcd(b, a); while (b != 0) { var remainder = a % b; a = b; b = remainder; } return a; } } 再帰 ラムダ式 public static int Gcd(int a, int b) { Func gcd = null;
gcd = (x, y) => y == 0 ? x : gcd(y, x % y);
return a > b ? gcd(a, b) : gcd(b, a);
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です