回复 20楼 wmf2014
只要个总个数,不用打表,10^10内的。我都算了好几天了,10^9~10^10之间的都没有算出来,是朋友要这个数据的。谢谢您!祝您身体健康万事如意!
2020-02-12 10:13
2020-02-12 10:54
2020-02-12 11:33
2020-02-12 13:38
[此贴子已经被作者于2020-2-12 17:57编辑过]
2020-02-12 16:47
2020-02-12 16:50
程序代码:Dim pri(200000000) As Byte
Sub 按钮1_Click()
pritab
End Sub
Sub pritab()
'用字节位筛法生成16亿以内的素数表
Dim i As Long, j As Long, b(8) As Byte, c As Byte, k As Long, l As Long, t As Double
j = 1
t = Timer
For i = 0 To 7
b(i) = j
j = j * 2 '位运算值初始化
Next
For i = 0 To 200000000
pri(i) = 170 '先假设所有奇数都是素数
Next
pri(0) = 172 '0,1不是素数,2是素数
i = 3
While i * i <= 1600000000
If (pri(Int(i / 8)) And b(i Mod 8)) > 0 Then
j = i * i
While j <= 1600000000
If (pri(Int(j / 8)) And b(j Mod 8)) > 0 Then
c = b(j Mod 8) Xor 255
pri(Int(j / 8)) = pri(Int(j / 8)) And c
End If
j = j + i * 2
Wend
End If
i = i + 2
Wend
k = 0
j = 0
For i = 2 To 1600000000
If (pri(Int(i / 8)) And b(i Mod 8)) > 0 Then
If i - l = 2 Then j = j + 1
k = k + 1
l = i
End If
Next
MsgBox "总素数:" & k & ",最大素数:" & l & ",孪生素数对:" & j & ",用时:" & Timer - t & "秒"
End Sub

2020-02-12 19:13
2020-02-12 20:23
2020-02-12 20:28
2020-02-12 20:29