Fuzion Logo
flang.dev — The Fuzion Language Portal
JavaScript seems to be disabled. Functionality is limited.

Rosetta Code Sieve of Eratosthenes Example

From rosettacode.org:

[The following task description was taken from rosettacode.org:]

Implement the Sieve of Eratosthenes algorithm, with the only allowed optimization that the outer loop can stop at the square root of the limit, and the inner loop may start at the square of the prime just found.

That means especially that you shouldn't optimize by using pre-computed wheels, i.e. don't assume you need only to cross out odd numbers (wheel based on 2), numbers equal to 1 or 5 modulo 6 (wheel based on 2 and 3), or similar wheels based on low primes.

If there's an easy way to add such a wheel based optimization, implement it as an alternative version.

Using Loops







Using Streams







Using Streams and Filters







Using Pipes

Pipes are just an syntax equivalent for streams using | to create a stream, & to filter a stream. Is this useful or too cryptic?






Using Pipes and better type inference for functions

This does not work yet. Would this be more useful?






Purely functional implementation using psSet

psSet is a persistent set data structure in Fuzion's standard library with well-behaved cumulative and average performance:







Purely functional implementation using bitsets

bitset is a persistent data structure in Fuzion's standard library that (currently) does not have good cumulative or average performance: