【C#】最小公倍数を求める(ユークリッドの互除法) 
2020/11/14 Sat [edit]
前回の最大公約数の求め方のついで。
ユークリッドの互除法が実装できてれば、最小公倍数を求めるのは簡単だ。
前回の Gcd (Greatest Common Divisor) を用いて、Lcm (Least Common Multiple) を書いてみよう。
●最小公倍数を求める(ユークリッドの互除法)
/// <summary>
/// 最小公倍数を求める(Least Common Multiple)
/// 2020/11/14 Fantom
/// http://fantom1x.blog130.fc2.com/blog-entry-385.html
/// http://fantom1x.blog130.fc2.com/blog-entry-384.html
/// http://fantom1x.blog130.fc2.com/blog-entry-215.html#lcm
/// </summary>
/// <param name="a">数値1 (>0)</param>
/// <param name="b">数値2 (>0)</param>
/// <returns>最小公倍数</returns>
public static int Lcm(this int a, int b)
{
return a * b / Gcd(a, b); //※Gcd は前回の記事を参照
}
●メインコード例
using System;
int h = 16;
int v = 9;
int m = Lcm(h, v);
Console.WriteLine("m = " + m);
a > 0, b > 0 となっているので注意(特に負の剰余は言語によって結果が違うので注意)。
Gcd() は前回の記事からコピペしてきて欲しい。
これも Java からのそのまま移植なので、解説は以前の記事を見て欲しい。ユークリッド互除法や最小公倍数の定義に関する説明も Wikipedia で良いだろう。数学的なものはこの辺りの例を見ればわかるだろう。
定義をそのままコーディングしたようなものなので、他言語でも簡単に移植できると思う。
・【Java】最大公約数・最小公倍数を求める(ユークリッドの互除法)
・ユークリッドの互除法 (Wikipedia)
・最小公倍数 (Wikipedia)
・最大公約数と最小公倍数
(関連記事)
【C#】最大公約数を求める/分数の約分をする(ユークリッドの互除法)
【Unity】【C#】画面解像度とアクペクト比(整数)を求める
【Java】最大公約数・最小公倍数を求める(ユークリッドの互除法)
【Java】3つ以上の最大公約数を求める(ユークリッドの互除法②)
【Java】拡張ユークリッドの互除法
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/385-56c12439
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |