|

楼主 |
发表于 2020-8-24 18:23
|
显示全部楼层
/102/11/41/59/89
2n=100,p=11
p+30=41,2n-p-30=100-11-30=59,2n-p=100-11=89.
额,偶数和4生素数组不一致了。改进一下代码。
代码如下:
Private Sub Command1_Click()
Dim a, b
a = Val(Text1)
a1 = a
q = Val(Text2)
m = Sqr(q)
If Right(a, 1) Mod 2 = 0 Then
a = a + 1
Else
a = a
End If
s = 0
a2 = a
Do While a2 < q
n = a2 + 1 + 30
Do While n < 100
B1 = a2
b2 = B1 + 30
B3 = n - B1 - 30
b4 = B3 + 30
c1 = fenjieyinzi0(Val(B1))
C2 = fenjieyinzi0(Val(b2))
c3 = fenjieyinzi0(Val(B3))
D1 = fenjieyinzi0(Val(b4))
If InStr(c1, "*") = 0 And InStr(D1, "*") = 0 And InStr(C2, "*") = 0 And InStr(c3, "*") = 0 And n < 2506 + 60 Then
s = s + 1
Print B1, b2, B3, b4
Text3 = Text3 & "/" & n & "/" & B1 & "/" & b2 & "/" & B3 & "/" & b4 & vbCrLf
s187 = s187 & "/" & n
Else
s = s
End If
n = n + 2
Loop
a2 = a2
s1 = s
Do While n < 10000
B1 = a2
b2 = B1 + 30
B3 = n - B1 - 30
b4 = B3 + 30
Print B3, b4, B1, b2
c1 = fenjieyinzi0(Val(B1))
C2 = fenjieyinzi0(Val(b2))
c3 = fenjieyinzi0(Val(B3))
D1 = fenjieyinzi0(Val(b4))
If InStr(c1, "*") = 0 And InStr(D1, "*") = 0 And InStr(C2, "*") = 0 And InStr(c3, "*") = 0 And n < 2506 + 60 Then
s1 = s1 + 1
Print B1, b2, B3, b4
Text3 = Text3 & "/" & n & "/" & B1 & "/" & b2 & "/" & B3 & "/" & b4 & vbCrLf
s187 = s187 & "/" & n
Else
s1 = s1
End If
n = n + 2
Loop
a2 = a2 + 2
s183 = s183 + s1
Loop
Combo1 = a1 & "与" & q & "之间有由间距为" & B3 - b2 & "的2对差为30的素数组成的" & s183 & "组4生素数对:" & vbCrLf & Text3
s103 = s187
s103 = Mid(s103, 1)
Dim i As Integer
Dim ak(), s105, cr(), f
Set f = CreateObject("Scripting.Dictionary")
s105 = Split(s103, "/")
j1 = UBound(s105)
Print j1
For k = 1 To j1
n1 = n1 + 1
ReDim Preserve ak(1 To n1)
ak(n1) = s105(n1)
Next
Print ak(1)
n = 0
For i = 1 To j1 - 1
n = n + 1
ReDim Preserve cr(1 To n)
m = Val(ak(i + 1))
f(m) = ""
Next
n = 0
m = f.Keys
For i = 0 To f.Count - 1
ReDim Preserve cr(1 To i + 1)
cr(i + 1) = m(i)
Next
For i = 1 To UBound(cr) - 1
For j = i + 1 To UBound(cr)
If cr(i) > cr(j) Then
temp = cr(j)
cr(j) = cr(i)
cr(i) = temp 'c数组是排序好的
End If
Next j
' If i Mod 20 = 0 Then
' s104 = s104 & temp & "/" & vbCrLf
' Else
' s104 = s104 & temp & "/"
' End If
Next i
For i = 1 To UBound(cr)
If i Mod 20 = 0 Then
s104 = s104 & cr(i) & "/" & vbCrLf
Else
s104 = s104 & cr(i) & "/"
End If
Next
Print temp
MsgBox "ok"
MsgBox s104 '显示数组
Text4 = s104
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Combo1 = ""
Form1.Cls
End Sub |
|