Talk:ALGOL 68-primes: Difference between revisions
Content added Content deleted
(Created a page with the source code for ALGOL 68-primes) |
(→Source code: Include 0 in the sieve) |
||
Line 6: | Line 6: | ||
OP PRIMESIEVE = ( INT n )[]BOOL: |
OP PRIMESIEVE = ( INT n )[]BOOL: |
||
BEGIN |
BEGIN |
||
[ |
[ 0 : n ]BOOL prime; |
||
prime[ |
prime[ 0 ] := prime[ 1 ] := FALSE; |
||
prime[ 2 ] := TRUE; |
|||
FOR i FROM 3 BY 2 TO UPB prime DO prime[ i ] := TRUE OD; |
FOR i FROM 3 BY 2 TO UPB prime DO prime[ i ] := TRUE OD; |
||
FOR i FROM 4 BY 2 TO UPB prime DO prime[ i ] := FALSE OD; |
FOR i FROM 4 BY 2 TO UPB prime DO prime[ i ] := FALSE OD; |
||
Line 16: | Line 17: | ||
END; # PRIMESIEVE # |
END; # PRIMESIEVE # |
||
# END primes.incl.a68 # |
# END primes.incl.a68 #</lang> |
||
</lang> |
Revision as of 16:54, 29 August 2021
Source code
<lang algol68># primes.incl.a68: prime related operators, procedure etc. #
# returns a sieve of primes up to n # OP PRIMESIEVE = ( INT n )[]BOOL: BEGIN [ 0 : n ]BOOL prime; prime[ 0 ] := prime[ 1 ] := FALSE; prime[ 2 ] := TRUE; FOR i FROM 3 BY 2 TO UPB prime DO prime[ i ] := TRUE OD; FOR i FROM 4 BY 2 TO UPB prime DO prime[ i ] := FALSE OD; FOR i FROM 3 BY 2 TO ENTIER sqrt( UPB prime ) DO IF prime[ i ] THEN FOR s FROM i * i BY i + i TO UPB prime DO prime[ s ] := FALSE OD FI OD; prime END; # PRIMESIEVE #
- END primes.incl.a68 #</lang>