40 lines
1.9 KiB
VB.net
40 lines
1.9 KiB
VB.net
Module Program
|
|
Dim primes As List(Of Long) = {3L, 5L}.ToList()
|
|
|
|
Sub Main(args As String())
|
|
Dim taskList As New List(Of Task(Of Integer))
|
|
Const cutOff As Integer = 200, bigUn As Integer = 100000,
|
|
chunks As Integer = 50, little As Integer = bigUn / chunks,
|
|
tn As String = " cuban prime"
|
|
Console.WriteLine("The first {0:n0}{1}s:", cutOff, tn)
|
|
Dim c As Integer = 0, showEach As Boolean = True,
|
|
u As Long = 0, v As Long = 1,
|
|
st As DateTime = DateTime.Now
|
|
For i As Long = 1 To Long.MaxValue
|
|
u += 6 : v += u
|
|
Dim found As Boolean = False, mx As Integer = Math.Ceiling(Math.Sqrt(v))
|
|
For Each item In primes
|
|
If item > mx Then Exit For
|
|
If v Mod item = 0 Then found = True : Exit For
|
|
Next : If Not found Then
|
|
c += 1 : If showEach Then
|
|
For z = primes.Last + 2 To v - 2 Step 2
|
|
Dim fnd As Boolean = False
|
|
For Each item In primes
|
|
If item > mx Then Exit For
|
|
If z Mod item = 0 Then fnd = True : Exit For
|
|
Next : If Not fnd Then primes.Add(z)
|
|
Next : primes.Add(v) : Console.Write("{0,11:n0}", v)
|
|
If c Mod 10 = 0 Then Console.WriteLine()
|
|
If c = cutOff Then showEach = False : _
|
|
Console.Write("{0}Progress to the {1:n0}th{2}: ", vbLf, bigUn, tn)
|
|
End If
|
|
If c Mod little = 0 Then Console.Write(".") : If c = bigUn Then Exit For
|
|
End If
|
|
Next
|
|
Console.WriteLine("{1}The {2:n0}th{3} is {0,17:n0}", v, vbLf, c, tn)
|
|
Console.WriteLine("Computation time was {0} seconds", (DateTime.Now - st).TotalSeconds)
|
|
If System.Diagnostics.Debugger.IsAttached Then Console.ReadKey()
|
|
End Sub
|
|
End Module
|