2 changed files with 35 additions and 1 deletions
@ -0,0 +1,28 @@ |
|||
// Scala primes |
|||
// This to my mind may not be the fastest algorithm, |
|||
// I would think printing when finding would be better, |
|||
// especially on memory, then storing the thing in a list |
|||
// and then running mkString on it, but it already |
|||
// outperforms java for me, so here it is |
|||
|
|||
object Primes { |
|||
def main(args: Array[String]) { |
|||
if (args.length < 1) { |
|||
println("Usage: scala Primes [MAX]") |
|||
} else print(primes(3, List(), args(0).toInt).mkString("\n") + "\n") |
|||
} |
|||
|
|||
def is_prime(num: Int): Boolean = { |
|||
def prime_loop(i: Int, max: Int): Boolean = |
|||
if (i > max) true |
|||
else if (num % i == 0) false |
|||
else prime_loop(i+2, max) |
|||
prime_loop(3, scala.math.sqrt(num).ceil.toInt) |
|||
} |
|||
|
|||
def primes(i: Int, acc: List[Int], max: Int): List[Int] = |
|||
if (i >= max) acc |
|||
else if (is_prime(i)) primes(i+2, acc ++ List(i), max) |
|||
else primes(i+2, acc, max) |
|||
|
|||
} |
Loading…
Reference in new issue