|

楼主 |
发表于 2022-11-29 22:05
|
显示全部楼层
本帖最后由 ysr 于 2022-11-30 10:37 编辑
再改进一下代码,仅仅输出差加m小于等于20的时候,代码如下:
Private Sub Command1_Click()
Dim a, b, c
a = Val(Text1)
b = Val(Text2)
If Right(a, 1) Mod 2 = 0 Then
a = a
Else
a = Val(a + 1)
End If
a1 = a
Do While a1 <= b
c = fenjieyinzi1(Val(a1))
c2 = fenjieyinzi2(Val(a1))
g = Mid(c, InStr(c, "=") + 1)
lg = Int(Mid(c2, InStr(c2, "=") + 1))
c3 = Mid(c2, 4, InStr(c2, "=") - 6)
m = Val(c3)
If Val(g - lg + Val(m)) <= 20 Then
c1 = c1 & a1 & " /差为" & Val(g - lg) & "/" & c3 & vbCrLf
Else
c1 = c1
End If
a1 = a1 + 2
Loop
Text3 = c1
Combo1 = "偶数/ 方根/ GM/ G/差 G-LG/ 偶数/ P/ m/ <LG/(m-1)区间平均值>/ LG" & vbCrLf & c1
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Combo1 = ""
End Sub
Private Function fenjieyinzi(sa As String) As String
Dim X, a, b
X = sa
b = Int(Sqr(Val(X)) / 2)
If X = 3 Or X = 2 Then
a = True
Else
If Right(X, 1) Mod 2 = 0 Then
a = False
Else
For I = 3 To 2 * b + 1 Step 2
If InStr(X / I, ".") = 0 Then
a = False
Exit For
Else: a = True
End If
Next
End If
End If
If a = True Then
fenjieyinzi = "这是个素数"
Else
fenjieyinzi = "2*2"
End If
End Function
Private Function fenjieyinzi1(sa As String) As String
Dim a, b
a = Val(sa)
m = Sqr(a)
a1 = 3
s = 0
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
'ls2 = ls2 & 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
'ls2 = ls2 & CStr(a2) & "+ " & CStr(b1) & vbCrLf
Else
s1 = s1
End If
a2 = a2 + 2
Loop
fenjieyinzi1 = a & "/" & m & "," & "/" & s & " / G=" & s1
End Function
Private Function fenjieyinzi2(sa As String) As String
Dim a, b
a = Val(sa)
m = Sqr(a)
m1 = Int(m)
a2 = m1
a1 = 3
s = 1
b = 1
Do While a2 <= m And InStr(fenjieyinzi(Val(a2)), "*") <> 0
a2 = a2 - 1
Loop
Do While a1 <= a2
c = fenjieyinzi(Val(a1))
If InStr(Trim(c), "*") = 0 Then
s = s + 1
b = b * Val(1 - 2 / a1)
Else
s = s
End If
a1 = a1 + 2
Loop
b2 = (a2 ^ 2 / 4) * b
b1 = (a / 4) * b
If s = 1 Then
fenjieyinzi2 = "/m为" & s & " LG=" & b1
Else
fenjieyinzi2 = "/m为" & s & " LG=" & b1
End If
End Function
|
|