- 締切済み
EXCEL VBA
2つの正の整数値(仮にa,bとする)を入力として,a÷bの商を求める関数を割り算(/)や剰余算(Mod)は使わずに作ることはできますか?? また、2つの正の整数値の最小公倍数を求める関数も作りたいのですが、どんなに考えても思いつきませんでした。回答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
コンピュタのCPUでの割り算は(回路的なレベル)引き算でやっていると言うことを聞いたことがある。 そのロジックを高級言語でやれば(馬鹿な話と思うが)結果は出るでしょう。学校での問題かな。 繰り返し除数で非除数から引き算していってマイナスになる直前で、 引き算した回数ーー>商 その時点での余りーー>余り になる理屈。 ーーー 最小公倍数 「2つの整数 a, b の最小公倍数を LCM(a, b) で表すと,a と b の最大公約数 GCD(a, b) を Euclid 互除法で求めれば,LCM(a, b) = a*b/GCD(a, b) で簡単に求まる」 ー 「Euclid 互除法」に行き着くが、これは「ユークリッドの互除法」でWEB照会すれば、沢山記事が出てくる。 プログラム例もあると思う。これ以上良いアルゴリズムは発見されてないようなので、目移りしないでアンシンしてこれを勉強のこと。
- pascal3141
- ベストアンサー率36% (99/269)
#1の割り算の方法を利用します。 (1)ユークリッドの互除法で、2つの整数の最大公約数Gを求めます。 (2)2つの整数をその最大公約数で割った商をa,bとすると、最小公倍数は、abGになります。
- keirika
- ベストアンサー率42% (279/658)
まず割り算は Sub Sample() Dim a As Integer Dim b As Integer Dim sho As Integer a = 15 b = 2 sho = 0 Do Until a < b a = a - b sho = sho + 1 Loop MsgBox sho End Sub 最小公倍数の関数の作成方法は分かりませんがアドインで分析ツールにチェックをつけるとLCM(最小公倍数)関数が使用できます。