|

楼主 |
发表于 2020-11-8 20:06
|
显示全部楼层
Private Function fenjieyinzi(sa As String) As String
Dim x, a, b, k As String
a = Val(sa)
x = 3
If a <= 1 Or a > Int(a) Then
If a = 1 Then
fenjieyinzi = "它既不是质数,也不是合数"
Else
MsgBox "error"
End If
Else
Do While a / 2 = Int(a / 2) And a >= 4
If b = 0 Then
fenjieyinzi = fenjieyinzi & "2"
b = 1
Else
fenjieyinzi = fenjieyinzi & "*2"
End If
a = a / 2
k = a
Loop
Do While a > 1
Do While x <= Sqr(a)
Do While a / x = Int(a / x) And a >= x * x
If b = 0 Then
fenjieyinzi = fenjieyinzi & x
b = 1
Else
fenjieyinzi = fenjieyinzi & "*" & x
End If
a = a / x
Loop
x = x + 2
Loop
k = a
a = 1
Loop
If b = 1 Then
fenjieyinzi = fenjieyinzi & "*" & k
Else
fenjieyinzi = "这是一个质数"
End If
End If
End Function
Private Sub Command1_Click()
Dim a, b
a = Val(Text1)
q = Val(Text3)
Do While a <= q
s = 0
m = Sqr(a)
a1 = 3
Do While a1 <= m
b = a - a1
c = fenjieyinzi(Val(a1))
d = fenjieyinzi(Val(b))
If InStr(c, "*") = 0 And InStr(d, "*") = 0 Then
s = s + 1
Else
s = s
End If
a1 = a1 + 2
Loop
a2 = a1
s1 = s
Do While a2 <= a / 2
b1 = a - a2
c1 = fenjieyinzi(Val(a2))
d1 = fenjieyinzi(Val(b1))
If InStr(c1, "*") = 0 And InStr(d1, "*") = 0 Then
s1 = s1 + 1
Else
s1 = s1
End If
a2 = a2 + 2
Loop
Text2 = Text2 & CStr(a) & " " & CStr(s) & " " & CStr(s1) & vbCrLf
Print a, s, s1
a = a + 2
Loop
Combo1.Text = Text2.Text
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Combo1 = ""
End Sub
|
|