#!/usr/bin/env gbs3 Sub GetPrimes(N As Integer) As Integer[] Dim aRes As New Integer[] Dim S As Integer[] Dim I, J, M As Integer Dim iMRoot, iHalf As Integer If N < 2 Then Return aRes If N = 2 Then Return [2] S = New Integer[(N - 3 + 1) \ 2] For J = 3 To N Step 2 S[I] = J Inc I Next iMRoot = Sqr(N) iHalf = S.Max I = 0 M = 3 While M <= iMRoot If S[I] Then For J = (M * M - 3) \ 2 To iHalf Step M S[J] = 0 Next Endif Inc I M = 2 * I + 3 Wend aRes.Add(2) For I = 0 To S.Max J = S[I] If J Then aRes.Add(J) Next Return aRes End Dim aRes As Integer[] Dim I As Integer dim T as Float = Timer For I = 1 To 5 aRes = GetPrimes(10000000) Print aRes.Count Next Print Format(Timer - T, "0.000 s") Error CStr(Jit.Time)