Sieve of Eratosthenes: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add CLU) |
Not a robot (talk | contribs) (Add Draco) |
||
Line 5,352: | Line 5,352: | ||
Output: |
Output: |
||
<pre>2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 </pre> |
<pre>2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 </pre> |
||
=={{header|Draco}}== |
|||
<lang draco>/* Sieve of Eratosthenes - fill a given boolean array */ |
|||
proc nonrec sieve([*] bool prime) void: |
|||
word p, c, max; |
|||
max := dim(prime,1)-1; |
|||
prime[0] := false; |
|||
prime[1] := false; |
|||
for p from 2 upto max do prime[p] := true od; |
|||
for p from 2 upto max>>1 do |
|||
if prime[p] then |
|||
for c from p*2 by p upto max do |
|||
prime[c] := false |
|||
od |
|||
fi |
|||
od |
|||
corp |
|||
/* Print primes up to 1000 using the sieve */ |
|||
proc nonrec main() void: |
|||
word MAX = 1000; |
|||
unsigned MAX i; |
|||
byte c; |
|||
[MAX+1] bool prime; |
|||
sieve(prime); |
|||
c := 0; |
|||
for i from 0 upto MAX do |
|||
if prime[i] then |
|||
write(i:4); |
|||
c := c + 1; |
|||
if c=10 then c:=0; writeln() fi |
|||
fi |
|||
od |
|||
corp</lang> |
|||
{{out}} |
|||
<pre> 2 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 557 563 569 571 577 587 593 599 601 |
|||
607 613 617 619 631 641 643 647 653 659 |
|||
661 673 677 683 691 701 709 719 727 733 |
|||
739 743 751 757 761 769 773 787 797 809 |
|||
811 821 823 827 829 839 853 857 859 863 |
|||
877 881 883 887 907 911 919 929 937 941 |
|||
947 953 967 971 977 983 991 997</pre> |
|||
=={{header|DWScript}}== |
=={{header|DWScript}}== |