最大公約数(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 = (x, y) => y == 0 ? x : gcd(y, x % y);
return a > b ? gcd(a, b) : gcd(b, a);
}