The sieve of Sundaram: Difference between revisions
Content added Content deleted
(Added Easylang) |
(Added FreeBASIC) |
||
Line 709: | Line 709: | ||
1 millionth Prime Found: 15485867 |
1 millionth Prime Found: 15485867 |
||
</pre> |
</pre> |
||
=={{header|FreeBASIC}}== |
|||
<syntaxhighlight lang="vbnet">Function sieve_of_Sundaram(n As Uinteger) As Uinteger Ptr |
|||
If n < 3 Then Return 0 |
|||
Dim As Uinteger r = Cint(Sqr(n)) |
|||
Dim As Uinteger k = Cint((n - 3) / 2) + 1 |
|||
Dim As Uinteger l = Cint((r - 3) / 2) + 1 |
|||
Dim As Uinteger Ptr primes = Callocate(k, Sizeof(Uinteger)) |
|||
Dim As Boolean Ptr marked = Callocate(k, Sizeof(Boolean)) |
|||
For i As Uinteger = 1 To l |
|||
Dim As Uinteger p = 2 * i + 1 |
|||
Dim As Uinteger s = Cint((p * p - 1) / 2) |
|||
For j As Uinteger = s To k Step p |
|||
marked[j] = True |
|||
Next j |
|||
Next i |
|||
Dim As Uinteger count = 0 |
|||
For i As Uinteger = 1 To k |
|||
If Not marked[i] Then |
|||
primes[count] = 2 * i + 1 |
|||
count += 1 |
|||
End If |
|||
Next i |
|||
Return primes |
|||
End Function |
|||
Const limit As Uinteger = 16e6 |
|||
Dim As Uinteger Ptr s = sieve_of_Sundaram(limit) |
|||
Print "First 100 odd primes generated by the Sieve of Sundaram:" |
|||
For i As Uinteger = 0 To 99 |
|||
Print Using "#####"; s[i]; |
|||
If (i + 1) Mod 10 = 0 Then Print |
|||
Next i |
|||
Print !"\nSundaram primes start with 3." |
|||
Print !"\nThe 100th Sundaram prime is: "; s[99] |
|||
Print !"\nThe 1000000th Sundaram prime is: "; s[999999] |
|||
Sleep</syntaxhighlight> |
|||
{{out}} |
|||
<pre>First 100 odd primes generated by the Sieve of Sundaram: |
|||
3 5 7 11 13 17 19 23 29 31 |
|||
37 41 43 47 53 59 61 67 71 73 |
|||
79 83 89 97 101 103 107 109 113 127 |
|||
131 137 139 149 151 157 163 167 173 179 |
|||
181 191 193 197 199 211 223 227 229 233 |
|||
239 241 251 257 263 269 271 277 281 283 |
|||
293 307 311 313 317 331 337 347 349 353 |
|||
359 367 373 379 383 389 397 401 409 419 |
|||
421 431 433 439 443 449 457 461 463 467 |
|||
479 487 491 499 503 509 521 523 541 547 |
|||
Sundaram primes start with 3. |
|||
The 100th Sundaram prime is: 547 |
|||
The 1000000th Sundaram prime is: 15485867</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |