package main
import (
"fmt"
)
//返回生成自然数序列
func GenerateNatural() chan int {
ch := make(chan int)
go func() {
for i := 2; ; i++ {
ch <- i
}
}()
return ch
}
//通过过滤器,删除被素数整除的数
func PrimerFiter(in <-chan int, prime int) chan int {
out := make(chan int)
go func() {
for {
if i := <-in; i%prime != 0 {
out <- i
}
}
}()
return out
}
func main() {
ch := GenerateNatural() //自然数2,3, 4
for i := 0; i < 100; i++ {
prime := <-ch //出现新的素数
fmt.Printf("%v:%v\n", i+1, prime)
ch = PrimerFiter(ch, prime)
}
}