|
|
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
21
a = Val(Text1)
m = Sqr(a)
m1 = Int(m)
a3 = a / 4
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
a4 = a1
22
b2 = m1 / 4 * b
If a <= 2000 Then
b1 = a3 * b - 1
ElseIf a <= 10000 Then
b1 = a3 * b - s / 5
Else
Do While a4 <= 4 * m1
c = fenjieyinzi(Val(a4))
If InStr(Trim(c), "*") = 0 Then
b = b * Val(1 - 2 / a4)
Else
s = s
End If
a4 = a4 + 2
Loop
b1 = a3 * b
End If
If a <= 8 Then
Text2 = "加强筛连乘积公式结果: 偶数" & a & " 其方根内最大素数" & a2 & " 方根内的素数个数m = " _
& s & " 有 " & s & "个区间,其中每个区间哥猜解素数对个数的平均值" & b1 / s & " 总对数为" & b1 & "方根内的解的个数为" & b2
Else
Text2 = " 加强筛连乘积公式结果: 偶数" & a & " 其方根内最大素数" & a2 & " 方根内的素数个数m = " _
& s & "(方根为)" & m & " 有" & s - 1 & "个区间,其中每个区间哥猜解素数对个数的平均值" & b1 / (s - 1) & " 总对数为" & b1 & "方根内的解的个数为" & b2
End If
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
End Sub
|
|