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

are_we_fast_yet/sieve.fz


# ported from: https://github.com/smarr/are-we-fast-yet/blob/master/benchmarks/Java/src/Sieve.java

public sieve
post result = 669
=>
  sieve(flags Mutable_Array bool, size i32) =>
    prime_count := mut 0

    for i:=2, i+1 while i <= size do
      if flags[i - 1]
        prime_count <- prime_count.get + 1
        k := mut (i + i)
        while k.get <= size
          flags[k.get - 1] := false
          k <- k.get + i
    prime_count.get

  count := 5000

  mi : mutate is
  mi.go ()->
    r := sieve ((mutate.array bool).type.new mi count true) count
    say r
    r