找到一个vb程序,不知道是不是快速乘法程序,原文前面的是高精度vc版乘法程序,不懂,后面是这个程序,不知道是不是乘法程序。
Dim i, j, L(2), a(1000) As Integer, b(1000) As Integer, c(2000, 2000) As Integer, d(2000, 2000) As Integer, x(10000) As Integer, jieguo As String, y(10000) As Integer
Private Sub Command1_Click()
L(1) = Len(Text2.Text)
L(2) = Len(Text3.Text)
For i = 1 To L(1)
a(i) = Val(Mid(Text2.Text, L(1) - i + 1, 1))
Next i
For i = 1 To L(2)
b(i) = Val(Mid(Text3.Text, L(2) - i + 1, 1))
Next i
For i = 1 To L(2)
For j = 1 To L(1)
c(i, j) = b(i) * a(j) + c(i, j)
d(i, j) = Int(c(i, j) / 10)
If d(i, j) > 0 Then
c(i, j) = c(i, j) - 10 * d(i, j)
c(i, j + 1) = c(i, j + 1) + d(i, j)
End If
d(i, j) = 0
Next j
Next i
For i = 1 To L(2)
b(i) = 0
Next i
For i = 1 To L(1)
a(i) = 0
Next i
For i = 1 To L(2)
For j = 1 To L(1) + 1
x(i + j - 1) = x(i + j - 1) + c(i, j)
c(i, j) = 0
Next j
Next i
For i = 1 To L(1) + L(2) + 1
y(i) = Int(x(i) / 10)
If y(i) > 0 Then
x(i) = x(i) - 10 * y(i)
x(i + 1) = x(i + 1) + y(i)
End If
y(i) = 0
Next i
Text1.Text = ""
If x(L(1) + L(2) + 1) <> 0 Then Text1.Text = Text1.Text & x(L(1) + L(2) + 1)
If x(L(1) + L(2)) <> 0 Then Text1.Text = Text1.Text & x(L(1) + L(2))
For i = L(1) + L(2) - 1 To 1 Step -1
Text1.Text = Text1.Text & x(i)
Next i
For i = 1 To L(1) + L(2) + 1
x(i) = 0
Next i
L(1) = 0
L(2) = 0
jieguo = Text1.Text
End Sub
Private Sub Form_Load()
Text2.Text = "a"
Text3.Text = "b"
Text1.Text = "结果"
Command1.Caption = "计算"
Timer1.Interval = 1
"interval,是间隔,值只能为数字而不能是true
jieguo = "结果"
End Sub
Private Sub Timer1_Timer()
Text1.Text = jieguo
End Sub
经过我验证了一下,这个乘法的速度不快,还没有我的模仿手工计算的乘法速度快,且大整数超过不知道多少位就会下标越界。太大话不能用了。
[此贴子已经被作者于2020-2-12 17:57编辑过]