7,762
社区成员
发帖
与我相关
我的任务
分享
VB实现超大数的乘法运算2008-11-28 18:33'*************************************************************************
'**函 数 名:MPC
'**输 入:D1(String)=乘数 -
'** :D2(String)=被乘数 -
'**输 出:(String)乘积 -
'**功能描述:
'**全局变量:
'**调用模块:
'** 注 意:乘数、被乘数都只能由数字组成。
'**作 者:
'**日 期:2008-11-28 18:29:50
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Function MPC(D1 As String, D2 As String) As String
Dim X, Y '两数长度
X = Len(D1): Y = Len(D2)
Dim A() As Integer
ReDim A(1 To X + Y, 1 To Y)
Dim I, J, C1, C2, CJ, JW
If Check1.Value = 1 Then
For C = 1 To X + Y
MPC = MPC & "-"
Next
MPC = MPC & vbCrLf
End If
For J = Y To 1 Step -1 'D2
JW = 0 '进位清0
C2 = Mid$(D2, J, 1) '每位数
For I = X To 1 Step -1 'D1
C1 = Mid$(D1, I, 1) '每位数
CJ = C1 * C2 + JW '计算乘积
C = I + J: R = Y + 1 - J
A(C, R) = CJ Mod 10 '本位
JW = CJ \ 10 '进位
Next
A(C - 1, R) = JW
If Check1.Value = 1 Then
Dim T, M
T = ""
For C = 1 To X + Y
MPC = MPC & A(C, R)
Next
MPC = MPC & vbCrLf
End If
Next
Dim B() As Integer
ReDim B(1 To X + Y)
JW = 0
For I = X + Y To 1 Step -1
Bit = JW
For J = 1 To Y
Bit = Bit + A(I, J)
Next
B(I) = Bit Mod 10
JW = Bit \ 10
Next
If Check1.Value = 1 Then
For C = 1 To X + Y
MPC = MPC & "-"
Next
MPC = MPC & vbCrLf
End If
If B(1) > 0 Then
MPC = MPC & B(1)
Else
MPC = MPC & Space(1)
End If
For I = 2 To X + Y
MPC = MPC & B(I)
Next
End Function