Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
|
|
@ -1,39 +1,76 @@
|
|||
Dim Shared As Uinteger Prime1
|
||||
Dim As Uinteger n = 3, c = 0, Prime2
|
||||
#include "isprime.bas"
|
||||
|
||||
Function isSemiprime(n As Uinteger) As Boolean
|
||||
Dim As Uinteger d = 3, c = 0
|
||||
While d*d <= n
|
||||
While n Mod d = 0
|
||||
If c = 2 Then Return False
|
||||
n /= d
|
||||
c += 1
|
||||
Wend
|
||||
d += 2
|
||||
Wend
|
||||
Prime1 = n
|
||||
Return c = 1
|
||||
Type PrimeHelper
|
||||
inc(7) As Integer
|
||||
idx As Integer
|
||||
End Type
|
||||
|
||||
Function initPrimeHelper() As PrimeHelper
|
||||
Dim helper As PrimeHelper
|
||||
helper.inc(0) = 4 : helper.inc(1) = 2 : helper.inc(2) = 4
|
||||
helper.inc(3) = 2 : helper.inc(4) = 4 : helper.inc(5) = 6
|
||||
helper.inc(6) = 2 : helper.inc(7) = 6
|
||||
helper.idx = 0
|
||||
Return helper
|
||||
End Function
|
||||
|
||||
Print "The first 50 Blum integers:"
|
||||
Do
|
||||
If isSemiprime(n) Then
|
||||
If Prime1 Mod 4 = 3 Then
|
||||
Prime2 = n / Prime1
|
||||
If (Prime2 <> Prime1) And (Prime2 Mod 4 = 3) Then
|
||||
c += 1
|
||||
If c <= 50 Then
|
||||
Print Using "####"; n;
|
||||
If c Mod 10 = 0 Then Print
|
||||
End If
|
||||
If c >= 26828 Then
|
||||
Print !"\nThe 26828th Blum integer is: " ; n
|
||||
Exit Do
|
||||
Function firstPrimeFactor(n As Integer) As Integer
|
||||
If n = 1 Then Return 1
|
||||
If n Mod 3 = 0 Then Return 3
|
||||
If n Mod 5 = 0 Then Return 5
|
||||
|
||||
Dim helper As PrimeHelper = initPrimeHelper()
|
||||
Dim k As Integer = 7
|
||||
|
||||
While k * k <= n
|
||||
If n Mod k = 0 Then Return k
|
||||
k += helper.inc(helper.idx)
|
||||
helper.idx = (helper.idx + 1) Mod 8
|
||||
Wend
|
||||
|
||||
Return n
|
||||
End Function
|
||||
|
||||
Sub main()
|
||||
Dim As Integer blum(49), counts(9)
|
||||
Dim As Integer bc = 0, i = 1, p, q
|
||||
Dim As Integer j
|
||||
|
||||
Dim As Double t0 = Timer
|
||||
Do
|
||||
p = firstPrimeFactor(i)
|
||||
If p Mod 4 = 3 Then
|
||||
q = i \ p
|
||||
If q <> p Andalso q Mod 4 = 3 Andalso isPrime(q) Then
|
||||
If bc < 50 Then blum(bc) = i
|
||||
counts(i Mod 10) += 1
|
||||
bc += 1
|
||||
|
||||
If bc = 50 Then
|
||||
Print "First 50 Blum integers:"
|
||||
For j = 0 To 49
|
||||
Print Using "####"; blum(j);
|
||||
If (j + 1) Mod 10 = 0 Then Print
|
||||
Next
|
||||
Print
|
||||
Elseif bc = 26828 Orelse bc Mod 100000 = 0 Then
|
||||
Print Using "The ###,###th Blum integer is: #,###,###"; bc; i
|
||||
|
||||
If bc = 400000 Then
|
||||
Print !"\n% distribution of the first 400,000 Blum integers:"
|
||||
For j = 1 To 9 Step 2
|
||||
If j <> 5 Then Print Using " ##.###% end in #"; (counts(j)/4000); j
|
||||
Next
|
||||
Exit Do
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
n += 2
|
||||
Loop
|
||||
i += Iif(i Mod 5 = 3, 4, 2)
|
||||
Loop
|
||||
Print Chr(10); Timer - t0; " sec."
|
||||
End Sub
|
||||
|
||||
main()
|
||||
|
||||
Sleep
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue