2010年3月29日 星期一

大數乘法

'大數乘法
Public Class Form1
    '12345*45678=563894910
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim a(300)
        Dim b(300)
        Dim c(600)
        Dim aStr = "12345"
        Dim bStr = "45678"
        Dim i
        Dim ia = 0
        For i = aStr.Length - 1 To 0 Step -1
            a(ia) = aStr.Chars(i)
            ia = ia + 1
        Next
        Dim ib = 0
        For i = bStr.Length - 1 To 0 Step -1
            b(ib) = bStr.Chars(i)
            ib = ib + 1
        Next

        Dim j
        For i = 0 To 300
            For j = 0 To 300
                c(i + j) = c(i + j) + Val(a(i)) * Val(b(j))
            Next
        Next
        For i = 0 To 300 - 1
            If c(i) >= 10 Then
                c(i + 1) = c(i + 1) + c(i) \ 10
                c(i) = c(i) Mod 10
            End If
        Next

        Dim str = ""
        For i = 0 To 300
            str = c(i) & str
        Next

        While Microsoft.VisualBasic.Left(str, 1) = "0"
            str = Microsoft.VisualBasic.Right(str, str.ToString.Length - 1)
        End While
        MsgBox(str)
    End Sub
End Class


沒有留言: