2010年3月29日 星期一

大數除法

'大數除法
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim a = "1234567890123456788999999"
        Dim b = "12345678901234567890"
        Dim q = 0
        While a.Length > b.Length Or a.Length = b.Length And a >= b
            q = q + 1
            a = bigSub(a, b)
        End While
        MsgBox(q)
        End
    End Sub
    Function bigSub(ByVal n1, ByVal n2)
        Dim a(100)
        Dim b(100)
        Dim d(100)

        Dim i1 = 0
        For i = n1.Length - 1 To 0 Step -1
            a(i1) = Val(n1.Chars(i))
            i1 = i1 + 1
        Next

        Dim i2 = 0
        For i = n2.Length - 1 To 0 Step -1
            b(i2) = Val(n2.Chars(i))
            i2 = i2 + 1
        Next

        Dim imax = IIf(i1 > i2, i1, i2)

        Dim c = 0
        For i = 0 To imax
            If a(i) - c >= b(i) Then
                d(i) = a(i) - b(i) - c
                c = 0
            Else
                d(i) = a(i) - b(i) - c + 10
                c = 1
            End If
        Next

        Dim str = ""
        For i = 0 To imax
            str = d(i) & str
        Next

        While Microsoft.VisualBasic.Left(str, 1) = "0"
            str = Microsoft.VisualBasic.Right(str, str.Length - 1)
        End While
        Return (str)
    End Function
End Class


沒有留言: