// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

// Send the sequence 2, 3, 4, ... to returned channel 
func Generate() *chan int {
	ch := new(chan int);
	go func(ch *chan int){
		for i := 2; ; i++ {
			ch <- i
		}
	}(ch);
	return ch;
}

// Filter out input values divisible by 'prime', send rest to returned channel
func Filter(in *chan int, prime int) *chan int {
	out := new(chan int);
	go func(in *chan int, out *chan int, prime int) {
		for {
			if i := <-in; i % prime != 0 {
				out <- i
			}
		}
	}(in, out, prime);
	return out;
}

func Sieve() *chan int {
	out := new(chan int);
	go func(out *chan int) {
		ch := Generate();
		for {
			prime := <-ch;
			out <- prime;
			ch = Filter(ch, prime);
		}
	}(out);
	return out;
}

func main() {
	primes := Sieve();
	for {
		print(<-primes, "\n");
	}
}
