Skip to content

Instantly share code, notes, and snippets.

@onilton
Last active April 5, 2017 18:29

Revisions

  1. onilton revised this gist Apr 5, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion sieve.scala
    Original file line number Diff line number Diff line change
    @@ -3,5 +3,5 @@ def sieve(maxNumber: Int) = {
    if (p >= a.size) a
    else if (!a(p) || n >= a.size) innerSieve(p+1, 2*(p+1), a)
    else { a(n) = false ; innerSieve(p, p + n, a) }
    innerSieve(2, 2, Array.fill(maxNumber+1)(true)).zipWithIndex.filter(_._1).map(_._2)
    innerSieve(2, 2, Array.fill(maxNumber+1)(true)).zipWithIndex.filter(_._1).map(_._2)
    }
  2. onilton revised this gist Apr 4, 2017. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions sieve.scala
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,7 @@
    def sieve(maxNumber: Int) = {
    def innerSieve(p: Int, n: Int, a: Array[Boolean]): Array[Boolean] =
    if (p >= a.size) a
    else if (!a(p)) innerSieve(p+1, 2*(p+1), a)
    else if (n >= a.size) innerSieve(p+1, 2*(p + 1), a)
    else if (!a(p) || n >= a.size) innerSieve(p+1, 2*(p+1), a)
    else { a(n) = false ; innerSieve(p, p + n, a) }
    innerSieve(2, 2, Array.fill(maxNumber+1)(true)).zipWithIndex.filter(_._1).map(_._2)
    }
  3. onilton created this gist Apr 3, 2017.
    8 changes: 8 additions & 0 deletions sieve.scala
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    def sieve(maxNumber: Int) = {
    def innerSieve(p: Int, n: Int, a: Array[Boolean]): Array[Boolean] =
    if (p >= a.size) a
    else if (!a(p)) innerSieve(p+1, 2*(p+1), a)
    else if (n >= a.size) innerSieve(p+1, 2*(p + 1), a)
    else { a(n) = false ; innerSieve(p, p + n, a) }
    innerSieve(2, 2, Array.fill(maxNumber+1)(true)).zipWithIndex.filter(_._1).map(_._2)
    }