|
一款可瞬间判定素数的神奇小软件
下面是“大数相减”程序:
'; 文件名: 大数相减
Private Sub form_Click()
Open "相减结果.txt" For Output As 1
Dim a5 As String ';作为字符串输入的 a5
Dim b5 As String ';作为字符串输入的 b5
Dim c5 As String ';作为字符串输出的差
Dim t5 As String
Dim aa5(100000) As Long ';存放被减数的各位数字
Dim bb5(100000) As Long ';存放减数的各位数字
Dim cc5(100000) As Long ';存放差的各位数字
a5 = "45891798"
b5 = "35698451212"
GoSub sub5 ';计算 a5 - b5
a5 = "45891156482135798"
b5 = "35698451212"
GoSub sub5
a5 = "45891156482135798"
b5 = "45891156482135798"
GoSub sub5
Exit Sub ';主程序结束
sub5:
k = 0 ';先假定 a5 - b5 够减
If (Len(a5) = Len(b5) And a5 < b5) Or Len(Trim$(a5)) < Len(Trim$(b5)) Then ';a5 < b5
t5 = b5: b5 = a5: a5 = t5 ';a5、b5 字串交换
k = -1 ';不够减,做记号
End If
If (Len(a5) = Len(b5) And a5 = b5) Then c5 = "0": GoTo 888 ';a5 = b5
La5 = Len(a5) ';把 a5 字串(被减数)的各位数码放在数组 aa5(i)中
For i5 = 1 To La5: aa5(i5) = Mid(a5, La5 - i5 + 1, 1): Next i5 ';aa5(1)最低位,aa5(La5)最高位
Lb5 = Len(b5) ';把 b5 字串(减数)的各位数码放在数组 bb5(i)中
For i5 = 1 To Lb5: bb5(i5) = Mid(b5, Lb5 - i5 + 1, 1): Next i5 ';bb5(1)最低位,bb5(Lb5)最高位
For i5 = 1 To La5: cc5(i5) = aa5(i5) - bb5(i5)
If cc5(i5) < 0 Then cc5(i5) = cc5(i5) + 10: aa5(i5 + 1) = aa5(i5 + 1) - 1
Next i5
c5 = "" ';把 cc5(i) 组装成 c5
For i5 = 1 To La5: c5 = Trim$(Str$(cc5(i5))) & c5: Next i5
For i5 = 1 To Len(c5) ';去掉多余 0
If Mid$(c5, 1, 1) <> 0 Then Exit For Else c5 = Mid$(c5, 2)
Next i5
If k = -1 Then c5 = "-" + c5 ';不够减加上负号
888: Print "c5="; c5
Print #1, "c5="; c5
Return
End Sub
---------------------------
运行结果:
c5 = -35652559414
c5 = 45891120783684586
c5 = 0
|
|