|

楼主 |
发表于 2021-10-18 17:06
|
显示全部楼层
'改进版连乘积求孪生素数对个数的程序
Private Sub Command1_Click()
Dim A, b
A = Trim(Text1)
a1 = A
Q = Trim(Text2)
m = Int(Sqr(Q))
If Right(A, 1) Mod 2 = 0 Then
A = MPC1(Trim(A), 1)
Else
A = A
End If
Do While InStr(fenjieyinzi0(Trim(A)), "*") <> 0
A = MPC1(Trim(A), 2)
Loop
Do While MBJC(Trim(A), Trim(Q)) < 0
b = A
d = fenjieyinzi0(Trim(b))
s = 0
s3 = ""
Do While s < 40 And InStr(d, "*") = 0
s4 = s + 1
If s4 Mod 20 = 0 Then
s3 = s3 & "/" & b & vbCrLf
Else
s3 = s3 & "/" & b
End If
s = s + 1
s2 = s * (s + 1)
b = MPC1(Trim(b), "2305567963945518424753102147331756070")
d = fenjieyinzi0(Trim(b))
Loop
If s > 6 Then
Text3 = Text3 & s3 & vbCrLf
ElseIf InStr(fenjieyinzi0(Trim(A)), "*") = 0 Then
Text3 = Text3
End If
If s > 1 Then
s5 = s5 & "/" & s
Else
s5 = s5
End If
Print s5
A = MPC1(Trim(A), 2)
s2 = 0
Loop
s6 = Mid(s5, 2)
s7 = max(Trim(s6))
Combo1 = a1 & "与" & Q & "之间的素数开头差为2305567963945518424753102147331756070最多有" & s7 & "个连续素数:" & vbCrLf & Text3
Text4 = s5
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Combo1 = ""
Form1.Cls
End Sub
Private Function max(ByVal lists As String) As String
Dim temp As Long
Dim A() As String
A = Split(lists, "/")
Dim b As Long
For b = 0 To UBound(A)
If temp < A(b) Then temp = A(b)
Next
max = temp
End Function |
|