|
代码如下:
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 x Mod 2 = 0 Then
a = False
Else
For I = 3 To 2 * b + 1 Step 2
If x Mod 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 Sub Command1_Click()
Dim a, b
a = Val(Text1)
m = Sqr(a)
m1 = Int(m)
a3 = a / 2
a2 = m1
a1 = 3
s = 1
b = 1 * 3 / 7 * 23 / 36
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
b2 = m1 * b
If a <= 2000 Then
b1 = a3 * b - 1
ElseIf a <= 10000 Then
b1 = a3 * b - s / 5
Else
Do While a4 <= 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
|
|