''' <summary>小学校で習うような簡単な数学を集めました。</summary> Public Module EasyMath '中略 ''' <summary>最大公約数を取得します。</summary> ''' <param name="Int1">1つ目の数字を指定します。</param> ''' <param name="Int2">2つ目の数字を指定します。</param> Public Function GetGCD(ByVal Int1 As Integer, ByVal Int2 As Integer) As Integer '小さいほうを探す Dim Mini As Integer = Math.Min(Int1, Int2) Dim Int1_List As New List(Of Integer) Dim OKList As New List(Of Integer) Dim inting As Double 'Int1を確認 For i As Integer = 1 To Mini inting = Int1 / i If Not IsDecimal(inting) Then Int1_List.Add(i) End If Next 'Int2を確認 For i As Integer = 1 To Mini inting = Int2 / i If Not IsDecimal(inting) Then If Int1_List.Contains(i) Then OKList.Add(i) End If End If Next Return OKList(OKList.Count - 1) End Function ''' <summary>数字が小数か確認します。</summary> ''' <param name="Nomber">確認する数字を指定します。</param> ''' <returns>小数ならTrue でないならFalseを返します。</returns> <Extension()> Public Function IsDecimal(ByVal Nomber As Decimal) As Boolean Dim NomberStr As String = CStr(Nomber) For Each c As Char In NomberStr If c = "."c Then Return True End If Next Return False End Function ''' <summary>分数を表します。</summary> ''' <remarks>約分は自動で行われます。</remarks> <Serializable()> Public Class Fraction Implements IConvertible '中略 ''' <summary>約分をします。</summary> Protected Friend Sub Reduce() '計算のメソッドがこのメソッドを実行したときにどこかの行で発生します。 Dim gcd = GetGCD(Me.Denominator, Me.Numerator) Me.Denominator \= gcd Me.Numerator \= gcd End Sub '中略 End Class End Module