Once I have simplified code as much as possible, made it smaller. By using loops were appropriate etc.
All ideas are welcome
Posted 05 September 2011 - 05:59 PM
Posted 06 September 2011 - 04:19 AM
Posted 06 September 2011 - 05:05 AM
jimmyBo, on 06 September 2011 - 02:53 AM, said:
This post has been edited by RudiVisser: 06 September 2011 - 05:06 AM
Posted 06 September 2011 - 08:19 AM
Posted 06 September 2011 - 12:39 PM
Posted 06 September 2011 - 12:49 PM
Private Function CalculatePrimeNumbersSequential(ByVal max As Integer) As IEnumerable(Of Integer)
Dim primes As New List(Of Integer)
For Each i In Enumerable.Range(2, max)
Dim range As IEnumerable(Of Integer) = Enumerable.Range(2, Math.Sqrt(i))
Dim all As Boolean = True
For Each j In range
If (Not ((i Mod j) > 0)) Then
all = False
Exit For
End If
Next
If all Then
primes.Add(i)
End If
Next
Return primes
End Function
CalculatePrimeNumbersSequential(10000000)
Private Function CalculatePrimeNumbersParallel(ByVal max As Integer) As IEnumerable(Of Integer)
Dim primes As IEnumerable(Of Integer) = New List(Of Integer)
Parallel.ForEach(Enumerable.Range(2, max), New ParallelOptions() With {.MaxDegreeOfParallelism = Environment.ProcessorCount}, Function() New List(Of Integer), _
Function(i, s, l)
Dim all As Boolean = True
For Each j In Enumerable.Range(2, Math.Sqrt(i))
If (Not ((i Mod j) > 0)) Then
all = False
Exit For
End If
Next
If all Then
l.Add(i)
End If
Return l
End Function, Sub(l)
SyncLock primes
primes = primes.Concat(l)
End SyncLock
End Sub)
Return primes
End Function
This post has been edited by CodingSup3rnatur@l-360: 06 September 2011 - 02:27 PM
Posted 12 October 2011 - 08:18 AM
This post has been edited by jonkettle: 12 October 2011 - 08:19 AM
