fun main() { val primes = sequence { var nums = generateSequence(2) { x -> x + 1 } while (true) { val a = nums.elementAt(0) yield(a) nums = nums.drop(1).filter { b -> b % a != 0 } } } println(primes.take(20).toList()) }