[这个贴子最后由天山草在 2008/10/20 07:46pm 第 1 次编辑]
下面是采用公式(1)准确计算 6 - 10000 哥拆数的程序。
'; 熊一兵哥拆数计算公式
';
Private Sub form_Click()
Open "0-0.1亿.txt" For Input As 1 ';调入素数表
Open "0-10000 熊一兵哥拆数.txt" For Output As 2 ';结果存入文件
Dim p(10000)
Dim pi(10000)
n = 10000 ';6 - n 内,每个偶数的哥拆数。p + p 也算是一种拆分
For i = 1 To n
Input #1, p(i)
If p(i) > n Then Exit For
Next i
jj = 1 ';以下计算π(1)、π(2)、π(3)、……、π(n)
For i = 1 To n
m = pi(i - 1)
For j = jj To n
If p(j) <= i Then m = m + 1 Else jj = j: Exit For
Next j
pi(i) = m
Next i
nn = 0
For k = 6 To n Step 2
g = 0
For i = 2 To k
If p(i) > k / 2 Then Exit For
g = g + pi(k - p(i)) - pi(k - p(i) - 1)
Next i
Print "g("; k; ")="; g
Print #2, "g("; k; ")="; g
nn = nn + g ';所有哥拆数累值
Next k
Print nn: Print #2, nn
Close
End Sub
运行结果:
g( 6 )= 1
g( 8 )= 1
g( 10 )= 2
g( 12 )= 1
g( 14 )= 2
g( 16 )= 2
g( 18 )= 2
g( 20 )= 2
g( 22 )= 3
g( 24 )= 3
g( 26 )= 3
g( 28 )= 2
g( 30 )= 3
g( 32 )= 2
g( 34 )= 4
g( 36 )= 4
g( 38 )= 2
g( 40 )= 3
g( 42 )= 4
g( 44 )= 3
g( 46 )= 4
g( 48 )= 5
g( 50 )= 4
g( 52 )= 3
g( 54 )= 5
g( 56 )= 3
………………
g( 9982 )= 135
g( 9984 )= 211
g( 9986 )= 103
g( 9988 )= 110
g( 9990 )= 269
g( 9992 )= 102
g( 9994 )= 98
g( 9996 )= 255
g( 9998 )= 99
g( 10000 )= 127
425750 ----------累计值