|

楼主 |
发表于 2025-6-2 19:19
|
显示全部楼层
本帖最后由 ysr 于 2025-6-3 02:40 编辑
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)
m1 = Val(Text3)
Do While a <= m1
s = 0
Text2 = ""
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
Print a1, "+", b
Text2 = Text2 & CStr(a1) & "+ " & CStr(b) & vbCrLf
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
Print a2, "+", B1
Else
s1 = s1
End If
a2 = a2 + 2
Loop
s11 = s11 & a & "的方根为" & m & "," & "方根内有" & s & "个,比例(个数/方根)" & s / m & "总数有" & s1 & "个,方根内的:" & vbCrLf & a & "=" & Text2
a = a + 2
Loop
Combo1 = s11
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Combo1 = ""
Form1.Cls
End Sub
|
|