Sieve of Eratosthenes: Difference between revisions
Content deleted Content added
→Bare Bones: def erase(i): |
Added Euler |
||
Line 6,930: | Line 6,930: | ||
16301 16319 16333 16339 16349 16361 16363 16369 16381 |
16301 16319 16333 16339 16349 16361 16363 16369 16381 |
||
1899 PRIMES |
1899 PRIMES |
||
</pre> |
|||
=={{header|Euler}}== |
|||
The original Euler doesn't have loops built-in. Loops can easily be added by defining and calling suitable procedures with literal procedures as parameters. In this sample, a C-style "for" loop procedure is defined and used to sieve and print the primes.<br> |
|||
'''begin''' |
|||
'''new''' sieve; '''new''' for; '''new''' prime; '''new''' i; |
|||
for <- ` '''formal''' init; '''formal''' test; '''formal''' incr; '''formal''' body; |
|||
'''begin''' |
|||
'''label''' again; |
|||
init; |
|||
again: '''if''' test '''then''' '''begin''' body; incr; '''goto''' again '''end''' '''else''' 0 |
|||
'''end''' |
|||
' |
|||
; |
|||
sieve <- ` '''formal''' n; |
|||
'''begin''' |
|||
'''new''' primes; '''new''' i; '''new''' i2; '''new''' j; |
|||
primes <- '''list''' n; |
|||
for( ` i <- 1 ', ` i <= n ', ` i <- i + 1 ' |
|||
, ` primes[ i ] <- '''true''' ' |
|||
); |
|||
primes[ 1 ] <- '''false'''; |
|||
for( ` i <- 2 ' |
|||
, ` [ i2 <- i * i ] <= n ' |
|||
, ` i <- i + 1 ' |
|||
, ` '''if''' primes[ i ] '''then''' |
|||
for( ` j <- i2 ', ` j <= n ', ` j <- j + i ' |
|||
, ` primes[ j ] <- '''false''' ' |
|||
) |
|||
'''else''' 0 |
|||
' |
|||
); |
|||
primes |
|||
'''end''' |
|||
' |
|||
; |
|||
prime <- sieve( 30 ); |
|||
for( ` i <- 1 ', ` i <= '''length''' prime ', ` i <- i + 1 ' |
|||
, ` '''if''' prime[ i ] '''then''' '''out''' i '''else''' 0 ' |
|||
) |
|||
'''end''' $ |
|||
{{out}} |
|||
<pre> |
|||
NUMBER 2 |
|||
NUMBER 3 |
|||
NUMBER 5 |
|||
NUMBER 7 |
|||
NUMBER 11 |
|||
NUMBER 13 |
|||
NUMBER 17 |
|||
NUMBER 19 |
|||
NUMBER 23 |
|||
NUMBER 29 |
|||
</pre> |
</pre> |
||