|
|

楼主 |
发表于 2026-4-27 07:58
|
显示全部楼层
Private Sub Command1_Click()
Dim a, b
a = Val(Text1)
a1 = a
Q = Val(Text2)
r = Val(Text4)
t = Timer
m = Sqr(Q)
If Right(a, 1) Mod 2 = 0 Then
a = a + 1
Else
a = a
End If
Do While InStr(fenjieyinzi(Val(a)), "*") <> 0
a = a + 2
Loop
Do While a <= Q
b = a
d = fenjieyinzi(Val(b))
s = 0
s3 = ""
Do While s >= 0 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 = b + r
d = fenjieyinzi(Val(b))
Loop
If s >= 10 Then
Text3 = Text3 & s3 & vbCrLf
End If
If s > 1 Then
s5 = s5 & "/" & s
Else
s5 = s5
End If
a = a + 2
s2 = 0
Loop
s6 = Mid(s5, 2)
s7 = max(Trim(s6))
Combo1 = a1 & "与" & Q & "之间的素数开头最多有公差为" & r & "的" & s7 & "个连续素数:用时" & Timer - t & "秒 " & vbCrLf & Text3
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
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
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 |
|