第11講 ユークリッド互除法
第5話 ユークリッド互除法を利用した分数約分判定と約分実行マクロ例
1
2
3
4
を実現するプログラム例
Private Sub CommandButton1_Click()
  
  Rows("6:2000").Select
  Selection.ClearContents
  Cells(1, 1).Select
  Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
  
  a = f
  b = f
  c = a
  d = b
  Cells(4, 2) = c
  Cells(5, 2) = d
  If b > a Then Call g(a, b)
  e = h(a, b)
  If e > 1 Then
    Cells(6, 1) = "上の分数は"
    Cells(6, 2) = e
    Cells(6, 3) = "で約分できます。約分すると、"
    Cells(7, 2) = Int(c / e)
    Cells(8, 2) = Int(d / e)
    Cells(9, 2) = "です。"
  Else
    Cells(6, 1) = "上の分数は約分できません。"
  End If

End Sub
Function f()
  
tobi:
  f = Int(10000 * Rnd)
  If f = 0 Then GoTo tobi
  
End Function
Sub g(a As Integer, b As Integer)

  Dim w As Integer
  w = a
  a = b
  b = w
  
End Sub
Function h(a As Integer, b As Integer)
  
  a = a Mod b
  If a = 0 Then
    h = b
    Exit Function
  End If
  h = h(b, a)
    
End Function
Private Sub CommandButton2_Click()
  
  Rows("4:2000").Select
  Selection.ClearContents
  Cells(1, 1).Select
  
End Sub
参考ダウンロード添付ファイル

ユークリッド互除法を使うと、最小公倍数を求めることも出来ます。
aとbの最大公約数をG、最小公倍数をLとすると、
G×L=a×b
の関係があります。
ですから、最小公倍数Lを求めるには、
L=a×b÷G
ということになります。

最小公倍数を求めるプログラムを以下の条件下で組んで下さい。
@ 整数a、bは今回の約分プログラムと同様にランダムに発生させる。
A 任意に発生させるだけだと、
  ほとんどの場合互いに素(最大公約数が1)になってしまうので、
  aもbも20未満の整数を3つかけたものとする。
7
8

L=a×b÷Gだと、a×bの部分がInteger型であるとオーバーフローしますから、
  工夫して下さい。

第4話へ 第6話へ
004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ