function numbers(n)
{
  return function() { return n++; };
}

function sieve(numbers, n)
{
  return function() { while ((next = numbers())) if(next % n != 0) return next; };
}

function primes()
{
  var n = numbers(2);
  return function() { var next = n(); n = sieve(n, next); return next; };
}

var p = primes();
while ((next = p()))
  dump(next+"\n");

