I am a Scala beginner, practicing my FP skills with Project Euler.
While working on "Problem 5: What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20", I was comparing Range- vs. Stream-based solutions:
val r1 = Range(20, Int.MaxValue).find(i => (2 to 20).forall(i % _ == 0)).get
val r2 = Stream.from(20).find(i => (2 to 20).forall(i % _ == 0)).get
Strangely, the computation of r1 finishes in roughly 20 seconds, while the Stream-based calculation of r2 is running out of memory. I would have expected the opposite -- could anyone explain please?