Fuzion Logo
flang.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

sieve =>
  sieve(flags marray 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
  say (sieve ((marrays bool).new count true) count) # should be 669