- ベストアンサー
小数点第一位まである数字、12個の最小公倍数を出すプログラムをExce
小数点第一位まである数字、12個の最小公倍数を出すプログラムをExcelで作りたいのですが、どうやったら良いのでしょうか? わかる方いらっしゃいましたら教えてください。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
最小公倍数というのは整数についての概念です。 http://ja.wikipedia.org/wiki/%E5%85%AC%E5%80%8D%E6%95%B0 より >公倍数(こうばいすう)とは、2つ以上の正の整数の、それらに共通する倍数のことをいう 小数でそのようなことをするなら、そこで使う「最小公倍数」の定義が必要です。 例えば、2 と 2.5 の最小公倍数は、いくらになればいいのでしょう。 2の整数倍 2 4 6 8 10 12 …… と 2.5の整数倍 2.5 5 7.5 10 12.5 …… とで共通する最小の数とすれば 10 ということになりますが、 小数第1位までの数を扱うということでやっているのならば、 2の「小数第1位までの数」倍 つまり、0.1倍、0.2倍 …… を考えて 0.2 0.4 0.6 0.8 1 1.2…… 2.5の「小数第1位までの数」倍 ただし、かけた結果が小数第1位までの数とすると 0.2倍、0.4倍……を考えて 0.5 1 1.5 …… とで共通する最小の数は 1 ということになります。 他にも考え方があるかも知れません。 ということで、「小数第1位までの数の最小公倍数」の定義を示してください。
その他の回答 (1)
- ASIMOV
- ベストアンサー率41% (982/2351)
12個全体の最小公倍数ということですよね その数列が、ある程度規則的な並びなら何とか成りそうですが、ランダムな数だと、Excelで計算できる桁の限度を超える可能性が有ります 図は、適当な数を設定して計算したものですが、10個めでオーバーフローしてしまいました 一応、計算方法... 少数では計算できないの下駄を履かせて(10倍して)整数にして計算します 12個一度には出来ないので、2個づつ行います 計算は下記のユーザー関数を標準モジュールに書き込みます ---------------------------------- Function flcm(x As Long, y As Long) As Long Dim g As Long g = fgcm(x, y) flcm = x / g * y / g * g End Function Function fgcm(a As Long, b As Long) Dim r As Long, tmp As Long, z As Long If a < b Then tmp = a: a = b: b = tmp End If r = a Mod b If r = 0 Then z = b Else z = fgcm(b, r) End If fgcm = z End Function -------------------------- D3 =flcm(C2,C3) D4 =flcm(C4,D3) として、以下コピーします E列は1/10にして、桁を元に戻しています
お礼
最小公倍数は整数についての定義だったのですか。 基本がなっていませんでした。 ありがとうございました。