最小公倍数・最大公約数を求める(その2)
前回の続き。
との最小公倍数・最大公約数を求めます。
考えたアルゴリズム
要素の数が2つなら、最大公約数と最小公倍数の関係*1から、どちらかを求めればもう一方は算出できます。
が、今回は、2つ以上としているのでそうはいきません。
プログラミングでの実装しやすさも踏まえて、以下の手順としました。
各要素の値ごとに、素因数分解
6を素因数分解
15を素因数分解
素数を覚えていれば楽だけど、プログラミングの時には先に何が素数かを求めるべきか否か?
また、素因数分解もどういう手順で考える必要あり。
次の手順で指数を並べるので、通常は指数がの時はを省略するけれど、敢えて省略せずに記載しました。
素数リストの各値について、素因数分解した結果から指数を並べる
なので、とを1つの表とする時には、が素数リストとなります。
で、指数を並べると以下の通り。
2 | 1 | 0 |
3 | 1 | 1 |
5 | 0 | 1 |
最小公倍数・最大公約数の計算
各素数ごとの指数の最大値、最小値を計算。
との場合だと、指数はかしかないですが。
2 | 1 | 0 | 1 | 0 | |
3 | 1 | 1 | 1 | 1 | |
5 | 0 | 1 | 1 | 0 |
なので、以下の通り求められます。
最小公倍数
最大公約数
次回、実装編。
*1:正の整数 に対して,それらの最大公約数を,最小公倍数をとおくと