scala/ScalaBook/chapter-02/sieve.scala

var N = 100
var sieve = Set(2)
var n = 3
while (n <= N) {
  sieve = sieve + n
  n += 2
}
var p = 3
while (p*p <= N) {
  var step = p + p
  var s = p * p
  while (s <= N) {
    sieve = sieve - s
    s += step
  }
  do {
    p += 1
  }while (!sieve.contains(p))
}
println(sieve)

   var A : List[Int] = List()
   for (i<-2 to 100) A = A ++ List(i)
   def Sieve (B:List[Int]) : List[Int] = 
     B match {
       case Nil   => Nil
       case x::xs => x::Sieve(xs.filter(e => e % x > 0))
     }
 
    val primes = Sieve(A)
    println(primes)