Вычисление простых чисел в Scala: как работает этот код?

Так что я'мы часами пытались понять, как именно этот код генерирует простые числа.

lazy val ps: Stream[Int] = 2 #:: Stream.from(3).filter(i =>
   ps.takeWhile{j => j * j  i % k > 0});

Мы использовали несколько printlns и т. д., но ничто не делает его более понятным.

Это то, что я думаю, код делает:

/**
 * [2,3] 
 * 
 * takeWhile 2*2 

Ответы на вопрос(3)

Ваш ответ на вопрос