// +build ignore,OMIT | |
package main | |
import "fmt" | |
// prime returns true if n is a prime number. | |
func prime(n int) bool { | |
for i := 2; i < n; i++ { | |
if n%i == 0 { | |
return false | |
} | |
} | |
return true | |
} | |
// primes returns a channel of ints on which it writes the first n prime | |
// numbers before closing it. | |
func primes(n int) chan int { | |
c := make(chan int) | |
go func() { | |
for i := 1; n > 0; i++ { | |
if prime(i) { | |
c <- i | |
n-- | |
} | |
} | |
close(c) | |
}() | |
return c | |
} | |
func main() { | |
for p := range primes(10) { | |
fmt.Println(p) | |
} | |
} |